字符串
声明
声明一个字符串有3种方式:
符号 | 特殊说明 | 示例 |
---|---|---|
单引号' | 单引号内的字符数不能为1, 不能换行 | " 或 'Hello World' |
双引号" | 不能换行 | "Hello" |
反引号(飘号)` | 可以换行,可以使用${}拼接变量或表达式 | name=`World`;print(`Hello ${name}`) |
示例
// 单引号内只有一个字符时, 会声明为rune(int32)类型而不是string类型
print(type('a'), 'a')
// 输出 int32, a
print(type('aa'), 'aa')
// 输出 string, aa
// 反引号`很适合多行或需要拼接变量的情况
print(
`这是第一行
这是第二行
这是第三行`
)
name = 'zwr'
age = 26
print(`姓名: ${name}
去年${age-1}岁`)
内置对象
名称 | 描述 | 示例 |
---|---|---|
len/length | 获取字节个数 | "你好".len // 6 |
rlen/slen/strlen | 获取字符个数 | "你好".strlen // 2 |
bytes | 获取字节数组 | "你".bytes // 输出byte数组的base64 |
runes/chars | 获取字符数组 | "你".chars// [20320] |
i/int | 转换成整型 | "10".i + 3 // 13 |
f/float | 转换成浮点型 | "3.14".f / 2 // 1.57 |
内置函数
名称 | 描述 | 示例 |
---|---|---|
find | 查找,可正则 | '2019年12月19号'.find(`\d{1,}`) // ["2019","12","19"] |
findall | 正则查找匹配详情 | '2019年12月19号'.findall(`(\d{1,})(.)`) // [["2019年","2019","年"],["12月","12","月"],["19号","19","号"]] |
contains | 包含,可正则(第二个参数true为开启正则) | "abc".contains("bc");"abc1".contains(`\d`, true) |
test | 检查字符串是否符合正则,传入空值返回false | "aaa".test(`\w\w\w`) |
split | 分割,可正则 | "a1b2c3d".split(`\d`) |
indexOf | 从左往右寻找字符,未找到时返回-1 | "abc".indexOf("b") |
lastIndexOf | 从右往左寻找字符 | "abc".indexOf("b") |
trim | 去掉头尾的空白符 | " abc ".trim() |
toLowerCase | 转成小写 | "ABC".toLowerCase() |
toUpperCase | 转成大写 | "abc".toUpperCase() |
substring | 截取其中一部分字符串 | "abc".substring(1,2) |
charCodeAt | 获取某一位的rune值 | "你好".charCodeAt(1) |
startsWith | 是否以一个字符串开头 | "abc".startsWith("a") |
endsWith | 是否以一个字符串结尾 | "abc".endsWith("a") |
replace | 替换,可正则 | "a1b22c".replace(`\d`,'xxx') |
join | 将一个数组拼接起来 | " - ".join('你','好','啊') |
fmt | 作为模版输出字符串 | "year:%04d rate:%.2f".fmt(18, 3.1415) |
repeat | 重复多次 | "nihao".repeat(3) |
hashCode | 获得和Java相同的哈希值 | "hi".hashCode() |
get | 对该地址发起HTTP get请求 | "http://baidu.com".get() |
post | 对该地址发起HTTP post请求 | "http://baidu.com".post("a=b") |
download | 将该地址下载至本地 | "http://baidu.com".download("baidu.html") |
read | 读取文件内容 | "baidu.html".read() |
write | 写入文件内容 | "baidu.html".write("haha") |
mkdir | 创建文件夹 | "testdir".mkdir() |
url | 将其解析成*url.URL对象 | "http://baidu.com".url().Host |
form | 将其解析成form表单键值(s)对 | "a=b&c=d&c=e".form().Get("a") |
urlEncode | 进行url转义 | "曾威人".urlEncode() |
urlDecode | 进行url逆转义 | "%E6%9B%BE%E5%A8%81%E4%BA%BA".urlDecode() |
get函数
当字符串是你需要请求的网址时, 可以通过.get()
函数来对该地址发起HTTP get请求
参数(可空)为header, 例如
"http://xxx".get({Cookie: 'some cookie value'})
返回值为bytearray
类型的请求结果, 可以.s
转成字符串类型以便阅读, 也可以.m
转成map或数组类型方便下一步操作
该地址不可访问时, 会直接抛出异常
post函数
当字符串是你需要请求的网址时, 可以通过.post()
函数来对该地址发起HTTP get请求
第一个参数(可空)为请求体, 例如
// json格式
"http://xxx".post({k: v})
// form表单格式
"http://xxx".post("k1=v1&k2=v2")
第二个参数(可空)为请求header, 例如
"http://xxx".post({
k: v
}, {
Cookie: 'some cookie value',
'User-Agent': 'test',
'Content-Type': 'application/json',
})
返回值为bytearray
类型的请求结果, 可以.s
转成字符串类型以便阅读, 也可以.m
转成map或数组类型方便下一步操作
该地址不可访问时, 会直接抛出异常
download函数
当字符串是一个可访问的地址时, 可以通过.download(本地文件路径)
函数来对该地址发起HTTP get请求后下载到本地文件
第一个参数为保存到的本地文件地址, 例如
// json格式
"http://xxx".download("test.html")
第二个参数(可空)为请求header(自版本v1.0.0_20200819
版本支持), 例如
"http://xxx".download("test.html", {
Cookie: 'some cookie value',
'User-Agent': 'test',
Referer: 'xxx',
})
返回值为下载文件的大小, 如果文件已经存在, 不会触发下载而是直接返回0
该地址不可访问时, 会直接抛出异常