solidity如何拼接字符串?
当你开始学习使用solidity开发以太坊智能合约之后,很快你会碰到一个问题:
一.在solidity中该如何拼接字符串?
可能你已经试过了,下面的代码试图把两个字符串使用相加的运算符连接起来,但是这行不通:
- var str = 'asdf'
- var b = str + 'sdf'
实际上,根据solidity的官方文档,目前在solidity中,需要我们自己来实现字符串拼接功能。
二.拼接字符串实现代码
例如,下面的代码实现两个字符串的拼接,基本 上是利用bytes和string之间的类型转换来实现字符串拼接:
- contract EzDemo {
- function strConcat(string _a, string _b) internal returns (string){
- bytes memory _ba = bytes(_a);
- bytes memory _bb = bytes(_b);
- string memory ret = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);
- bytes memory bret = bytes(ret);
- uint k = 0;
- for (uint i = 0; i < _ba.length; i++)bret[k++] = _ba[i];
- for (i = 0; i < _bb.length; i++) bret[k++] = _bb[i];
- return string(ret);
- }
- }
上面的代码很容易扩展到拼接多个字符串。
注意:如果长度计算比实际的少,可能会出现“new BigNumber() not a base 16 number: " error occurs when not refreshing without the cache”异常。
三.使用第三方库
不过好在有人写了一个库(可能有BUG,现在已被删除),可以让我们省些力气:
- import "github.com/Arachnid/solidity-stringutils/strings.sol";
- contract C {
- using strings for *;
- string public s;
- function foo(string s1, string s2) {
- s = s1.toSlice().concat(s2.toSlice());
- }
- }
文章来源:https://my.oschina.net/u/3794778/blog/1800631
solidity如何拼接字符串?的更多相关文章
- 为什么 Java 8 中不再需要 StringBuilder 拼接字符串
为什么 Java 8 中不再需要 StringBuilder 拼接字符串 来源:codeceo 发布时间:2016-12-27 阅读次数:427 0 在Java开发者中,字符串的拼接占用资源高往往 ...
- knockoutJS学习笔记01:从拼接字符串到编写模板引擎
开篇 关于knockout的文章,园里已经有很多大神写过了,而且都写得很好.其实knockout学习起来还是很容易的,看看官网的demo和园里的文章,练习练习就可以上手了(仅限使用,不包含研究源码). ...
- Java使用占位符拼接字符串
大家知道,在C#编程中,可以用占位符来拼接字符串,用起来非常的方便. 特别是需要进行大量的参数拼接的时候,比如: Console.WriteLine(String.Format("该域名{0 ...
- razor 拼接字符串
在asp.net引擎中 拼接字符串可以这样写 <script src="~/script/<%=scriptname%>.js"></script&g ...
- 谈JavaScript组合拼接字符串的效率 --转载
JavaScript组合拼接字符串的效率.在脚本开发过程中,经常会按照某个规则,组合拼接出一个大字符串进行输出.比如写脚本控件时控制整个控件的外观的HTML标签输出,比如AJAX里得到服务器端的回传值 ...
- c++拼接字符串效率比较(+=、append、stringstream、sprintf)
转自:http://www.cnblogs.com/james6176/p/3222671.html c++拼接字符串效率比较(+=.append.stringstream.sprintf) 最近写的 ...
- 数据库(MSSQLServer,Oracle,DB2,MySql)常见语句以及问题(续1之拼接字符串)
上一篇文章http://www.cnblogs.com/valiant1882331/p/4056403.html写的太长了,所以就换了一篇,链接上一节继续 字符串的拼接 MySql中可以使用&quo ...
- js - 在拼接字符串中动态submit当前form
今天在做一个项目的时候, mapabc中的inforWindow中,如果是超链接a,不直接响应. 后来的解决方案是动态产生form,并调用summit方法.如下 自定义一个js函数: function ...
- sql server中单引号拼接字符串(书写错误会出现错误"浮点值 XXXX 超出了计算机表示范围(8 个字节)。“XX”附近有语法错误。")
" ' "(单引号)的运用:在sql server中,两个" ' "(单引号)在拼接字符串的情况下运用,就是表示拼接上了一个" ' "单引号 ...
随机推荐
- 转:getContextPath、getServletPath、getRequestURI的区别
假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果 ...
- c# 协变和逆变的理解
1. 是什么 1.1 协变 协变指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型.如 string 到 object 的转换.多见于类型参数用作方法的返回值. 1.2 逆变 逆变指能够 ...
- xlsxwriter
xlsxwriter是python中用来处理execl表格的库 参考
- Asp.net Core 2.1 Kestrel 现在支持 多协议处理(Tcp)
地址:https://github.com/davidfowl/MultiProtocolAspNetCore.git 在一个Kestrel服务上可以同时处理Tcp,Http,Https等多种协议. ...
- javascript快速排序的思考
还记得三个月前,学习过快速排序,示例所讲的python快速排序十分易于理解,然而网上学习的c#的快速排序当时就懵逼的,现在已经全忘了,大概记得个思路 在学习完了一些高级的js方法后,今天用js模拟了p ...
- 终于,我们的新产品Fotor Slideshow Maker上线了!!
辛苦了大半年,使用纯网页技术全新打造的首个交互式Slideshow产品终于上线了,现在是 http://slideshow.fotor.com,希望能尽快推出中文版! http://blog.foto ...
- Day 7 深copy和浅Copy
dict.fromkeys的用法 1 2 3 4 5 6 7 8 9 10 11 #dict.fromkeys的用法 #例子1 dic = dict.fromkeys([1,2,3],[]) prin ...
- jzoj4724
DJL为了避免成为一只咸鱼,来找czgj学习Fibonacci数列. 通过czgj的谆谆教导,DJL明白了Fibonacci数列是这样定义的: F(1)=1;F(2)=1;F(n)=F(n-1)+F( ...
- Storm Trident API
在Storm Trident中有五种操作类型 Apply Locally:本地操作,所有操作应用在本地节点数据上,不会产生网络传输 Repartitioning:数据流重定向,单纯的改变数据流向,不会 ...
- Django服务器启动时指定端口和IP方法
python manager.py runserver 127.0.0.1:8001