如何在Solidity中连接两个字符串值

9

连接两个或更多字符串值 -

pragma solidity 0.8.9;

contract StringConcatation{
    function AppendString(string memory a, string memory b) public pure returns (string memory) {
        return string(abi.encodePacked(a,"-",b));
    }
}
2个回答

8

编辑:正如@MAMY Sébastien在另一个答案中提到的那样,自Solidity 0.8.12以来,您终于可以使用string.concat()来实现此目的:

string.concat(a, "-", b);

旧答案:

这是目前的规范方法:

string(bytes.concat(bytes(a), "-", bytes(b)));

你的示例仍然有效,也很好。 bytes.concat() 是新增的,因为 abi.encodePacked() 在未来可能会被弃用,以便在某个时候拥有更具体的功能。在散列之前连接 bytes 数组似乎是它目前的主要用例。

这些转换使得在使用 bytes.concat()string 时有点冗长,这就是为什么 string.concat() 将在未来版本中引入 的原因。


4

从Solidity 0.8.12开始,您可以使用string.concat()来连接字符串。您的代码将如下所示:

pragma solidity 0.8.12;

contract StringConcatation {
    function AppendString(string memory a, string memory b) public pure returns (string memory) {
        return string.concat(a,"-",b);
    }
}

来源: https://docs.soliditylang.org/en/latest/types.html?highlight=concat#the-functions-bytes-concat-and-string-concat

这篇文章介绍了 Solidity 语言中的 bytes.concat 和 string.concat 函数。这两个函数可以用来将多个字节数组或字符串连接成一个更大的字节数组或字符串。在使用这些函数时,需要注意数据类型和长度的匹配问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接