建议和反馈

请填写你的反馈内容

感谢您对链客的信任!

恭喜您填写完个人简历!链客专注于区块链职位连接,帮助您的投递更加精准高效,赶快去选择自己心仪的岗位吧!

推动中国区块链事业发展始终是我们坚定不移的梦——链客团队

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

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

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

Diva

2018-09-03

29755

0

撰写答案

请先登陆或注册

2个回答

TEJ

2018-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)

TEJ

2018-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)
  • TEJ

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

邀请

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