Solidity 字符串如何合并?

【问题描述】

以下是我写的Helloworld.sol 代码段,

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.10;
contract Helloworld
{
    string public greet = "Hello World! ";
    string public name;

    function sayHello(string memory _name) public pure returns(string memory){        
        return "Hello, " + _name; // compile fail. 
    }

    function setName(string memory _name) public {
        name = _name;
    }

    function getName() public view returns(string memory) {
        return name;
    }
}

使用Truffle编译后结果如下:

提示:没有 + 运算符。

【问题分析】

原本以为solidity和大部分的javascript的语法一样,应该会有字符串合并的操作,结果令人大失所望。于是求助百度,看到的解决方案都是转化为字节流处理,虽然能实现,这种方式感觉太low了,不符合对一种新语言的追求。于是又继续寻找其他解决方案。

【问题解决】

终于找到一种全新的解决方案,如下:

As of Feb 2022, in Solidity v0.8.12 you can now concatenate strings in a simpler fashion!

string.concat(s1, s2)

 2022年2月份开始,Solidity v0.8.12版本支持string.concat操作。

于是试一下,代码修改如下:

编译成功! 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰暗角落里的琴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值