erlang的string模块

string

翻译: gashero

目录

字符串处理函数库。

1   导出函数

1.1   len(String) -> Length

String=string()
Length

返回字符串的字符数。

1.2   equal(String1,String2) -> bool()

String1=String2=string()

测试两个字符串是否相等,如果相等返回 true ,不相等返回 false

1.3   concat(String1,String2) -> String3

String1=String2=String3=string()

连接两个字符串成为新的字符串,返回新的字符串。

1.4   chr(String,Character) -> Index

String=string()
Character=char()
Index=integer()

返回一个字符串中某个字符第一次出现的位置,如果不存在则返回0。

函数 rchr 拥有相同参数,但是从右侧开始计算。

1.5   str(String,SubString) -> Index

String=SubString=string()
Index=integer()

返回子串匹配位置,未匹配则返回0。例如:

> string:str(" Hello Hello World World ", "Hello World").
8

函数 rstr 拥有相同参数,但是从右侧开始计算。

1.6   span(String,Chars) -> Length

String=Chars=string()
Length=integer()

返回String匹配Chars中最多字符长度,从前开始。例如:

> string:span("\t    abcdefg"," \t").
5
> string:cspan("\t    abcdefg"," \t").
0

函数 cspan 则是取从前开始第一个匹配时前面不匹配的部分。后面的Chars可以包含多个字符用于匹配。

1.7   substr(String,Start[,Length]) -> SubString

String=SubString=string()
Start=Length=integer()

取得字符串的子字符串,可以指定开始处和长度,长度可省略。例如:

> string:substr("Hello World",4,5).
"lo Wo"

1.8   tokens(String,SeparatorList) -> Tokens

String=SeparatorList=string()
Tokens=[string()]

根据分隔符号列表中的字符将字符串切割成词法符号。例如:

> string:tokens("abc defxxghix jkl","x ").
["abc","def","ghi","jkl"]

1.9   chars(Character,Number[,Tail]) -> String

Character=char()
Number=integer()
String=string()

返回包含指定数目个字符的字符串,可选的指定随后跟着的字符串Tail。

1.10   copies(String,Number) -> Copies

String=Copies=string()
Number=integer()

返回包含指定数量份复制过的字符串。

1.11   words(String[,Character]) -> Count

String=string()
Character=char()
Count=integer()

返回字符串中的单词个数,分隔符可以在第二个可选参数指定。例如:

> string:words(" Hello old boy!",$o).
4

注意分隔字符必须以美元符号开头,后面指定,如上的 $o

1.12   sub_word(String,Number[,Character]) -> Word

String=Word=string()
Character=char()
Number=integer()

返回指定位置的单词,单词间的分隔符定义同上。注意这里的位置数字是以1开始的。例如:

> string:sub_word(" Hello old boy !",3,$o).
"ld b"

1.13   strip(String[,Direction[,Character]]) -> Stripped

String=Stripped=string()
Direction=left | right | both
Character=char()

返回去掉了两端空白的字符串,可以指定方向和空白字符。 strip/1 等同于 strip(String,both) 。例如:

> string:strip("...Hello.....",both,$.).
"Hello"

1.14   left(String,Number[,Character]) -> Left

String=Left=string()
Character=char
Number=integer()

返回从左起,调整过长度为指定数字的字符串,可以指定后面跟的填充字符,默认为空格。如果字符串太长也不会被截断。例如:

> string:left("Hello",10,$.).
"Hello....."

函数 right 拥有相同的参数,只不过会将字符串右对齐。

1.15   centre(String,Number[,Character]) -> Centered

String=Centered=string()
Character=char
Number=integer()

将字符串中间对齐扩充到指定长度,不足不用用空格或指定字符填充。

1.16   sub_string(String,Start[,Stop]) -> SubString

String=SubString=string()
Start=Stop=integer()

返回字符串的子字符串,可以指定开始位置和结束位置。例如:

> string:sub_string("Hello World",4,8).
"lo Wo"

注意不同于 substr 的指定开始和长度,这个函数是指定开始和结束。

1.17   to_float(String) -> {Float,Rest} | {error,Reason}

String=string()
Float=float()
Rest=string()
Reason=no_float | not_a_list

将一个开始于浮点数的字符串转换成浮点数,剩余无法识别的会返回。例如:

> {F1,Fs}=string:to_float("1.0-1.0e-1"),
> {F2,[]}=string:to_float(Fs),
> F1+F2.
0.900000
> string:to_float("3/2=1.5").
{error,no_float}
> string:to_float("-1.5eX").
{-1.50000,"eX"}

1.18   to_integer(String) -> {Int,Rest} | {error,Reason}

String=string()
Int=integer()
Rest=string()
Reason= no_integer | not_a_list

将参数中以整数开头的字符串转换成整数和剩余部分。例如:

> {I1,Is}=string:to_integer("33+22"),
> {I2,[]}=string:to_integer(Is),
> I1-I2.
11
> string:to_integer("0.5").
{0,".5"}
> string:to_integer("x=2").
{error,no_integer}

1.19   to_lower(String) -> Result

String=Result=string()
Char=CharResult=integer()

将字符或字符串转换成大写或小写的形式。其他形式:

to_lower(Char) -> CharResult
to_upper(String) -> Result
to_upper(Char) -> CharResult

2   注意

这里面有些函数看起来有点像,这是因为 string 包是由以前的两个包合并而成,以前的函数全部都保留下来了。

正则表达式函数放在了独立的模块 regexp 中了。旧的入口点为了向后兼容也保留了,不过在未来的发行版中会取消,所以建议用户使用新的模块。

string 中没有文档化的函数不要使用。

3   作者

Robert Virding – support@erlang.ericsson.se

Torbjorn Tornkvist – support@erlang.ericsson.se

Leave a Reply