建议和反馈

请填写你的反馈内容

问答 > 以太坊 > 问答详情
已解决

在solidity中,如何判断两个string 是否相等呢?10LK

在solidity中,如何判断两个string 是否相等呢?

2018-09-03
0
请先登陆或注册

TEJ2018-09-03
pragma solidity ^0.4.24;

contract Test {
    
    mapping (address => bool) public compareRecord;
    
    string str = "hello";
    
    bool public checkResult = false;
    
    modifier check(string _str1,string _str2) {
        require(keccak256(abi.encodePacked(_str1)) == keccak256(abi.encodePacked(_str2)));
        _;
    }
    
    // 使用 modifier比较两个字符串
    function func1 (string __str1, string __str2) public check(__str1,__str2)  returns(bool)  {
        //  保存调用者的比较结果
        compareRecord[msg.sender] = true;
    } 
    
    // 函数中直接判断
    function compareStr (string _str) public returns(bool) {
        if(keccak256(abi.encodePacked(_str)) == keccak256(abi.encodePacked(str))) {
    // 如果二者相等,使checkResult为true
            checkResult = true;
        }
    // fan'hui返回check'Result
        return checkResult;
    }
}


投一票
评论(0)
赞赏(0)
TEJ2018-09-03
//  可以使用修饰器
modifier check (string _str1, string _str2) {
    require(keccak256(abi.encodePacked(_str1))==keccak256(abi.encodePacked(_str1)));
    _;
}
//  在判断时将要判断的两个string传入修饰器

function func() public check(str1,str2) {
...
}

//  或者在函数中直接使用
//  已知字符串 str =“hello”
string public str = "hello";
// 在比较函数中传入 另一个待比较字符串作为参数 _str1
function func(string _str1)  public  {
       if ( keccak256(abi.encodePacked(_str1))==keccak256(abi.encodePacked(str))){
        //   如果二者相等,
        ......
       }
       
}


投一票
评论(1)
赞赏(0)
    2条回答
  • TEJ

    写的好乱...重新回答了下

求助中

解决了这个问题,预计可以帮助到

  • 5
  • 1
  • 6
  • 6
  • 4
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励