您如何在Solidity中比较字符串?

时间:2019-02-03 01:23:55

标签: ethereum solidity

我认为比较字符串就像这样做一样容易

function withStrs(string memory a, string memory b) internal {
  if (a == b) {
    // do something
  }
}

但是这样做给我一个错误Operator == not compatible with types string memory and string memory

正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以通过散列字符串的打包编码值来比较字符串:

if (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))) {
  // do something
}

keccak256是哈希函数supported by Solidityabi.encodePacked()通过the Application Binary Interface对值进行编码。