专栏首页智能合约以太坊智能合约开发第五篇:字符串拼接—Solidity

以太坊智能合约开发第五篇:字符串拼接—Solidity

上一篇,我们实现了一个简单的智能合约。用户输入什么字符串,合约就原样返回什么。在文章最后抛出了一个问题:如果我们事先在合约里定义好 Hello 字符串,如何与 name 变量进行字符串拼接?

在智能合约里进行字符串的拼接可不是一件简单的事情。本篇就来介绍智能合约里的字符串拼接。

尝试

我们先用绝大部分语言都通用的连接符 +. 来尝试着修改代码:

//pragma关键字:版本申明。
//用来指示编译器将代码编译成特定版本,以免引起兼容性问题
//此处不支持0.4.0之前的编译器,也不支持0.5.0之后的编译器(条件为 ^)
pragma solidity ^0.4.0;

//contract关键字:合约申明
//和Java、PHP中的class类似
//此处是申明一个名为Hello的合约
contract Hello {

    string str="Hello ";

    //public: 函数访问属性(后续文章为详细阐述)
    //returns (string): 定义返回值类型为string
    function say(string name) public returns (string) {
        return str + name;
    }
}

运行 node deploy.js 部署脚本后,抛出了一个异常:

TypeError: Operator + not compatible with types string storage ref and string memory return str + name;

我们将其修改为 . 并尝试部署后,也抛出一个异常:

TypeError: Member "name" not found or not visible after argument-dependent lookup in string storage ref return str . name;

说明在智能合约里,+. 都不是连接符。 通过查阅 Solidity 官方文档,我们发现 Solidity 语言并不提供字符串连接符的语法:

那有没有其他方式,可以实现字符串的拼接功能呢?

以下部分为付费用户专享福利,请点击链接跳转至我的专栏付费购买。通过阅读以下部分,你将学习到:

第三方字符串工具合约:字符串的扩展处理(查找、分割、比较、拼接等功能) 智能合约里第三方合约的引入 字符串的拼接实现

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Phalcon入门教程之控制器

    Marser
  • PHP性能分析之Xhprof的使用

    Marser
  • Phalcon入门教程之Volt模板引擎

    Marser
  • String字符串

    Python知识大全
  • js过滤空格

    很实用的js函数 function replaceSpace(string) { var temp = ""; string = '' + string; sp...

    苦咖啡
  • 字符串处理技巧

    1、快速统计字符串中每个字符出现的个数 hash表 2、求两个字符串公共的最长子串长度和子串 双重循环遍历找到长度,同时用二重指针保留住最长长度时候的指针位置 ...

    用户1215536
  • Python基础:字符串(string)

      python的字符串是不可变的(immutable),因此不能直接改变字符串内部的字符

    py3study
  • 下属缺乏经验,工作难以胜任,上司怎么办?

    这个问题在试用期员工身上体现的会比较明显,很多上司会直接下一个该员工不能胜任工作的结论,笔者也曾在试用期被上级误解过,甚至连解释的机会都没有。

    张树臣
  • php字符串操作函数大全

    仙士可
  • Python|字符串的知识

    字符串是字符的序列表示,可以由一对单引号(‘),双引号(“)或三引号(‘’’)构成。其中单引号和双引号都可以表示单行字符,两者作用相同。使用单引号时,双引号可以...

    算法与编程之美

扫码关注云+社区

领取腾讯云代金券