你如何比较 Solidity 中的字符串?

Posted

技术标签:

【中文标题】你如何比较 Solidity 中的字符串?【英文标题】:How do you compare strings in Solidity? 【发布时间】:2019-06-27 04:31:39 【问题描述】:

我认为比较字符串会像这样做一样简单:

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】:

您可以通过对字符串的打包编码值进行哈希处理来比较字符串:

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

keccak256 是一个散列函数supported by Solidity,abi.encodePacked() 通过the Application Binary Interface 编码值。

【讨论】:

以上是关于你如何比较 Solidity 中的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Solidity中的字符串连接?

Solidity 中的字符串数组

Solidity - 字符串中的无效字符

Solidity顺序编程

Solidity字符串类型

你如何比较Java中的两个版本字符串?