ZGG内置类型-字符串
ZGG语言提供了强大的字符串功能。
// 普通的单行字符串
'asdfadsfdsa'
// ZGG所有字符串都支持多行
'第一行
第二行
第三行'
// 字符串内嵌入标识符和表达式
zgg> name := 'zgg'
zgg
zgg> 'Hello, $name'
Hello, zgg
zgg> 'Hello, ${name.upper()}'
Hello, ZGG
// 如果在字符串开始的单引号前加一个r,表示该字符串内除了\'会转义为'外,其余字符都原样返回,也不会嵌入标识符和表达式。常用于写正则表达式
zgg> r'Hello, \t\'${name.upper()}\''
Hello, \t'${name.upper()}'
字符串与任意类型相加,结果为字符串拼接
字符串与整数n相乘,结果为字符串重复n遍
为了提高工作效率,ZGG内置了大量实用的字符串方法
方法名 | 作用 |
---|---|
截取子串 | |
转大写 | |
转小写 | |
查找第一个符合正则的子串 | |
返回一个字符串的哈希值,Int | |
用指定分隔符分割字符串 | |
用指定正则模式分割字符串 | |
把多行字符串分割成一个数组,每行一个元素。即.split('\n') | |
找到子串在字符串中第一次出现的位置 | |
找到子串在字符串中最后一次出现的位置 | |
替换第一个匹配到的子串 | |
替换所有匹配的子串 | |
替换所有正则匹配到的子串 | |
去掉字符串前后的空格 | |
判断字符串是否有指定前缀 | |
判断字符串是否有指定后缀 | |
判断字符串是否包含指定子串 | |
将十六进制串解析为Bytes | |
将Base64编码字符串解析为Bytes | |
模板填充值 |
生成一个子串。具体用法请看下方例子
zgg> 'zgg lang'.substr(1) // 只有一个参数时
gg lang
zgg> 'zgg lang'.substr(-4) // start可以为负数,表示“倒数第几个字符”
lang
zgg> 'zgg lang'.substr(1, 3) // 两个参数时
gg
zgg> 'zgg lang'.substr(1, -1) // end也可以未负数
gg lan
zgg> 'zgg lang'.substr(-4, -1) // start与end都可以为负数
lan
zgg> 'zgg lang'.substr(0, -1)
zgg lan
字符串转大写
字符串转小写
查找第一个符合正则的子串,找不到返回空字符串。更多正则相关功能,请看regex和regex2标准库
zgg> 'sdfsaf1231sdf'.find(r'\d+')
1231
返回字符串的哈希值 ,使用bkdr算法
用指定分隔符分割字符串
指定正则模式分割字符串
用指定换行符"\n"分割字符串,相当于xxx.split('\n')
从第start个字符开始,查找子串sub第一次出现的位置。start缺省值为0。找不到时返回-1
zgg> 'abcabcabc'.indexOf('a')
0
zgg> 'abcabcabc'.indexOf('a', 1)
3
返回sub在字符串最后出现时的位置,找不到返回-1
替换换第一个匹配到的子串。不修改原字符串,返回新的字符串
zgg> 'zgg:welcome to zgg lang'.replaceOne('zgg', 'ZGG')
ZGG:welcome to zgg lang
替换所有匹配的子串。不修改原字符串,返回新的字符串
zgg> 'zgg:welcome to zgg lang'.replaceAll('zgg', 'ZGG')
ZGG:welcome to ZGG lang
强大的字符串替换方法,替换所有正则匹配到的子串。
- 当repl为字符串时,所有匹配到的子串都直接替 换为repl。此时,支持正则捕获组
- 当repl为函数或其他可执行对象时,所有匹配到的子串都会作为唯一参数传入该函数执行,然后替换为函数返回值
// 一般字符串替换
zgg> 'ID:100 Number:1024'.replace(r'\d+', '***')
ID:*** Number:***
// 带捕获组的字符串替换
zgg> 'ID:100 Number:1024'.replace(r'(\d)(\d*)', r'$2$1')
ID:001 Number:0241
// 函数替换
zgg> 'ID:100 Number:1024'.replace(r'\d+', v => int(v)+1)
ID:101 Number:1025
去掉字符串前后的空格
判断字符串是否有指定前缀prefix
判断字符串是否有指定后缀suffix
判断字符串是否包含指定子串
将十六进制字符串,转为Bytes。如果字符串不是一个合法的十六进制字符串则抛出异常
zgg> '303132'.decodeHex()
012
zgg> '303132!'.decodeHex()
Exception! str.decodeHex decode failed: encoding/hex: invalid byte: U+0021 '!'
:0 (str.decodeHex)
:0 (<root>)
将Base64编码字符串解析为Bytes。如果字符串不是一个合法的Base64字符串则抛出异常
模板字符串填充内容,返回填充结果。
zgg> 'Name: {name} Age: {age}'.fillParams({
.... name: 'ZGG',
.... age: 1,
.... })
Name: ZGG Age: 1
最近更新 1yr ago