字符串

声明

声明一个字符串有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

该地址不可访问时, 会直接抛出异常