LibString.sol¶
LibString提供了常用的字符串操作。这些操作是基于字符的,而非字节。
使用方法¶
首先需要通过import引入LibString类库, 以下为使用示例
pragma solidity >=0.4.24 <0.6.11;
import "./LibString.sol";
contract TestString {
function f() public view returns(uint ){
string memory str = "字符串";
uint len = LibString.lenOfChars(str);//Expected to be 3
return len;
}
}
API列表¶
编号 | API | API描述 |
---|---|---|
1 | lenOfChars(string src) internal pure returns(uint) | 获取字符个数 |
2 | lenOfBytes(string src) internal pure returns(uint) | 获取字节个数 |
3 | startWith(string src, string prefix) internal pure returns(bool) | 前缀串判断 |
4 | endWith(string src, string tail) internal pure returns(bool) | 尾缀串判断 |
5 | equal(string self, string other) | 两字符串是否相等 |
6 | equalNocase(string self, string other) | 两字符串是否相等, 忽视大小写 |
7 | empty(string src) public pure returns(bool) | 字符串是否为空 |
8 | concat(string self, string str) public returns (string _ret) | 字符串拼接 |
9 | substrByCharIndex(string self, uint start, uint len) public returns (string) | 取子字符串,下标是字符下标 |
10 | compare(string self, string other) internal pure returns (int) | 比较两个字符串的大小 |
11 | compareNocase(string self, string other) internal pure returns (int) | 比较两个字符串的大小,忽视大小写 |
12 | toUppercase(string src) internal pure returns(string) | 转换为大写 |
13 | toLowercase(string src) internal pure returns(string) | 转换为小写 |
14 | indexOf(string src, string value) internal pure returns (int) | 查找字符串中是否含有子字符串 |
15 | indexOf(string src, string value, uint offset) internal pure returns (int) | 查找字符串中是否含有子字符串 |
16 | split(string src, string separator) internal pure returns (string[]) | 字符串根据分隔符拆分成数组 |
API详情¶
1. lenOfChars 方法¶
获取一个字符串所包含的字符数量
参数¶
- src: 字符串
返回值¶
- uint256:字符个数
实例¶
function f() public view returns(uint ){
string memory str = "字符串";
uint len = LibString.lenOfChars(str);//Expected to be 3
return len;
}
2. lenOfBytes 方法¶
获取一个字符串所包含的字节数量
参数¶
- src: 字符串
返回值¶
- uint256:字节个数
实例¶
function f() public view returns(uint ){
string memory str = "字符串";
uint len = LibString.lenOfBytes(str);//Expected to be 9
return len;
}
3. startWith 方法¶
startWith用于判断一个字符串是否为另一个字符串的前缀串
参数¶
- src:字符串
- prefix:子串
返回值¶
- bool: prefix是否为src的前缀串
实例¶
function f() public view returns(bool){
bool r = LibString.startWith("abcd","ab");//Expected to be true
return r;
}
4. endWith 方法¶
endWith用于测试一个字符串是否为另一个字符串的尾缀串
参数¶
- src: 字符串
- tail:子串
返回值¶
- bool: tail是否为src的尾缀串
实例¶
function f() public view returns(bool){
bool r = LibString.startWith("abcd","cd");//Expected to be true
return r;
}
5. equal 方法¶
用于判断两个字符串是否相等。
参数¶
- self:字符串
- other:字符串
返回值¶
- bool: 两个字符串是否相等
实例¶
function f() public view returns(bool){
bool r = LibString.equal("abcd","abcd");//Expected to be true
return r;
}
6. equalNocase 方法¶
用于判断两个字符串是否相等。忽视大小写
参数¶
- self:字符串
- other:字符串
返回值¶
- bool: 两个字符串是否相等。忽视大小写
实例¶
function f() public view returns(bool){
bool r = LibString.equalNocase("abcd","ABCD");//Expected to be true
return r;
}
7. empty 方法¶
判断字符串是否为空串
参数¶
- src: 待判断串
返回值¶
- bool: 该字符串是否为空串
实例¶
function f() public returns(bool, bool){
bool r1 = LibString.empty("abcd");//Expected to be false
bool r2 = LibString.empty("");//Expected to be true
//TODO:
return (r1,r2);
}
8. concat 方法¶
该方法连接两个字符串,并得到一个新的字符串。
参数¶
- self:当前字符串
- str:另一个字符串
返回值¶
- string: 拼接所得字符串
实例¶
function f() public returns(string memory){
string memory s1 = "ab";
string memory s2 = "cd";
return LibString.concat(s1,s2);//Exptected to be abcd
}
9. substrByCharIndex方法¶
substrByCharIndex方法用于提取子字符串。
参数¶
- self:当前字符串
- start:子串起点字符的下标
- end: 字串的字符长度
返回值¶
- string: 子串
实例¶
function f() public returns(string memory) {
string memory full = "完整字符串";
string memory sub = LibString.substrByCharIndex(full ,2, 3);//Expected to be 字符串
return sub;
}
10. compare 方法¶
用于判断两个字符串的大小。
参数¶
- self:字符串
- other:字符串
返回值¶
- int8: -1:左值小于右边,0:相等,1-左值大于右边
实例¶
function f() public view returns(int8){
int8 c = LibString.compare("abcd","abcd");// Expected to be 0
}
11. compareNocase 方法¶
用于判断两个字符串的大小。忽视大小写
参数¶
- self:字符串
- other:字符串
返回值¶
- int8: -1:左值小于右边,0:相等,1-左值大于右边
实例¶
function f() public view returns(int8){
int8 c = LibString.compareNocase("abcd","abcd");// Expected to be 0
}
12. toUppercase 方法¶
转换成大写
参数¶
- src: 字符串
返回值¶
- string: 大写字符串
实例¶
function f() public view returns(string memory) {
string memory c = LibString.toUppercase("abcd");// Expected to be ABCD
return c;
}
13. toLowercase 方法¶
转换成小写
参数¶
- src: 字符串
返回值¶
- string: 小写字符串
实例¶
function f() public view returns(string memory) {
string memory c = LibString.toLowercase("ABCD");// Expected to be abcd
return c;
}
14. indexOf 方法¶
查找字符串中相同子字符串的位置
参数¶
- string: 字符串
- string: 子字符串
返回值¶
- int: 返回字符串的位置,如不存在返回-1
实例¶
function f() public view returns(int) {
int c = LibString.indexOf("ABCD", "B");// Expected to be 1
return c;
}