查看源代码 string (stdlib v6.2)
字符串处理函数。
此模块提供用于字符串处理的函数。
此模块中的字符串由 unicode:chardata/0
表示,即码位列表、使用 UTF-8 编码码位的二进制数据(UTF-8 二进制数据)或两者的混合。
"abcd" is a valid string
<<"abcd">> is a valid string
["abcd"] is a valid string
<<"abc..åäö"/utf8>> is a valid string
<<"abc..åäö">> is NOT a valid string,
but a binary with Latin-1-encoded codepoints
[<<"abc">>, "..åäö"] is a valid string
[atom] is NOT a valid string
此模块对字形集群进行操作。字形集群是用户感知的字符,可以用多个码位表示。
"å" [229] or [97, 778]
"e̊" [101, 778]
字符串 "ß↑e̊" 的长度为 3,即使它由码位 [223,8593,101,778]
或 UTF-8 二进制数据 <<195,159,226,134,145,101,204,138>>
表示。
出于性能原因,对于 find/3
、replace/3
、split/2
、split/3
和 trim/3
中的 prepend
类和非现代(或分解)的韩文码位,不处理字形集群。
字符串的拆分和追加要在字形集群边界上进行。不验证追加字符串的结果是否有效或已规范化。
大多数函数都希望所有输入都规范化为一种形式,例如,请参阅 unicode:characters_to_nfc_list/1
。
任何函数都不考虑对输入进行语言或特定于区域设置的处理。
对于无效的输入字符串,这些函数可能会崩溃。例如,这些函数期望 UTF-8 二进制数据,但并非所有函数都验证所有二进制数据是否已正确编码。
除非另有说明,否则返回值类型与输入类型相同。也就是说,二进制输入返回二进制输出,列表输入返回列表输出,混合输入可以返回混合输出。
1> string:trim(" sarah ").
"sarah"
2> string:trim(<<" sarah ">>).
<<"sarah">>
3> string:lexemes("foo bar", " ").
["foo","bar"]
4> string:lexemes(<<"foo bar">>, " ").
[<<"foo">>,<<"bar">>]
此模块已在 Erlang/OTP 20 中重新构建,以处理 unicode:chardata/0
并对字形集群进行操作。仅适用于 Latin-1 列表作为输入的 旧函数
仍然可用,但不应使用,它们将在未来的版本中被弃用。
备注
一些通用的字符串函数看起来似乎相互重叠。原因是此字符串包是两个早期包的组合,并且保留了这两个包的所有函数。
摘要
函数
将 String
转换为不区分大小写、可比较的字符串。当要比较两个字符串是否相等时,首选函数 casefold/1
,而不是 lowercase/1
。另请参阅 equal/4
。
返回一个字符串,其中从 String
中删除了任何尾随的 \n
或 \r\n
。
如果 A
和 B
相等,则返回 true
,否则返回 false
。
删除 String
中 SearchPattern
之前的所有内容,并返回字符串的其余部分;如果未找到 SearchPattern
,则返回 nomatch
。Dir
可以是 leading
或 trailing
,表示要从哪个方向搜索字符。
如果 String
是空字符串,则返回 true
,否则返回 false
。
返回一个介于 +0.0
和 1.0
之间的浮点数,表示给定字符串之间的 Jaro 相似度。相似度较高的字符串得分会更接近 1.0
,+0.0
表示没有相似度,1.0
表示完全匹配。
返回 String
中的字形集群数。
返回 String
中的词素列表,由 SeparatorList
中的字形集群分隔。
将 String
转换为小写。
返回 String
中的第一个码位,以及尾部中 String
的其余部分。如果 String
为空,则返回空列表;如果下一个字节无效,则返回 {error, String}
元组。
返回 String
中的第一个字形集群,以及尾部中 String
的其余部分。如果 String
为空,则返回空列表;如果下一个字节无效,则返回 {error, String}
元组。
返回 String
中第 N
个词素,其中词素由 SeparatorList
中的字形集群分隔。
使用字形集群 Char
将 String
填充到 Length
。Dir
可以是 leading
、trailing
或 both
,表示应在何处添加填充。
如果 Prefix
是 String
的前缀,则删除它并返回 String
的其余部分,否则返回 nomatch
。
将 String
中的 SearchPattern
替换为 Replacement
。Where
指示要替换 SearchPattern
的 leading
、trailing
或 all
次出现。
返回 String
中字形集群的反向列表。
返回 String
的子字符串,该子字符串最多包含 Length
个字形集群,从位置 Start
开始。
在遇到 SearchPattern
的位置拆分 String
,并返回剩余部分。Where
,默认为 leading
,指示 SearchPattern
的 leading
、trailing
或 all
次出现将拆分 String
。
只要字符是集合 Characters
的成员或集合 Characters
的补集,就从 String
中获取字符。Dir
可以是 leading
或 trailing
,表示要从哪个方向获取字符。
将 String
转换为首字母大写。
参数 String
应该以有效的文本表示浮点数开头(数字为 ASCII 值)。浮点数之后字符串中的剩余字符将在 Rest
中返回。
将 String
转换为字形集群列表。
参数 String
应该以有效的文本表示整数开头(数字为 ASCII 值)。整数之后字符串中的剩余字符将在 Rest
中返回。
等效于 trim(String, Dir, Whitespace})
,其中 Whitespace
是不可中断的空格码位集,定义为 Unicode 标准附件 #31 中的 Pattern_White_Space。
返回一个字符串,其中删除了前导或尾随或两者都删除了的 Characters
。
将 String
转换为大写。
过时的 API 函数
返回一个字符串,其中 String
位于字符串中心,并被空格或 Character
包围。结果字符串的长度为 Number
。
返回一个由 Number
个字符 Character
组成的字符串。或者,该字符串可以以字符串 Tail
结尾。
返回 Character
在 String
中首次出现的索引。如果 Character
未出现,则返回 0
。
连接 String1
和 String2
以形成新的字符串 String3
,并返回该字符串。
返回一个包含 String
重复 Number
次的字符串。
返回 String
的最大初始段的长度,该段完全由不属于 Chars
的字符组成。
返回一个字符串,其中 StringList
的元素由 Separator
中的字符串分隔。
返回根据 Number
调整长度的 String
。左边距是固定的。如果 length(String)
< Number
,则使用空格或 Character
填充 String
。
返回 String
中的字符数。
返回 Character
在 String
中最后一次出现的索引。如果 Character
未出现,则返回 0
。
返回根据 Number
调整长度的 String
。右边距是固定的。如果 (String)
的长度 < Number
,则使用空格或 Character
填充 String
。
返回 SubString
在 String
中最后一次出现的位置的起始索引。如果 SubString
在 String
中不存在,则返回 0
。
返回由 Chars
中字符组成的 String
的最大初始段的长度。
返回 SubString
在 String
中第一次出现的位置的起始索引。如果 SubString
在 String
中不存在,则返回 0
。
返回一个字符串,其中已移除前导或尾随,或两者都有的空格或若干个 Character
。
返回 String
的一个子字符串,该子字符串从位置 Start
开始到字符串的末尾,或到并包括位置 Stop
。
返回 String
中位于位置 Number
的单词。单词由空格或 Character
分隔。
返回 String
的一个子字符串,该子字符串从位置 Start
开始,到字符串的末尾或长度为 Length
的位置结束。
指定的字符串或字符将进行大小写转换。请注意,支持的字符集是 ISO/IEC 8859-1(也称为 Latin 1);此集合之外的所有值都不会更改。
指定的字符串或字符将进行大小写转换。请注意,支持的字符集是 ISO/IEC 8859-1(也称为 Latin 1);此集合之外的所有值都不会更改。
返回 String
中的标记列表,标记由 SeparatorList
中的字符分隔。
返回 String
中的单词数,单词由空格或 Character
分隔。
类型
函数
-spec casefold(String :: unicode:chardata()) -> unicode:chardata().
将 String
转换为不区分大小写、可比较的字符串。当要比较两个字符串是否相等时,首选函数 casefold/1
,而不是 lowercase/1
。另请参阅 equal/4
。
示例
1> string:casefold("Ω and ẞ SHARP S").
"ω and ss sharp s"
-spec chomp(String :: unicode:chardata()) -> unicode:chardata().
返回一个字符串,其中从 String
中删除了任何尾随的 \n
或 \r\n
。
示例
182> string:chomp(<<"\nHello\n\n">>).
<<"\nHello">>
183> string:chomp("\nHello\r\r\n").
"\nHello\r"
-spec equal(A, B) -> boolean() when A :: unicode:chardata(), B :: unicode:chardata().
等效于 equal(A, B, true)
。
-spec equal(A, B, IgnoreCase) -> boolean() when A :: unicode:chardata(), B :: unicode:chardata(), IgnoreCase :: boolean().
-spec equal(A, B, IgnoreCase, Norm) -> boolean() when A :: unicode:chardata(), B :: unicode:chardata(), IgnoreCase :: boolean(), Norm :: none | nfc | nfd | nfkc | nfkd.
如果 A
和 B
相等,则返回 true
,否则返回 false
。
如果 IgnoreCase
为 true
,则函数会在相等性测试之前动态执行 casefold
操作。
如果 Norm
不是 none
,则函数会在相等性测试之前动态应用规范化。有四种可用的规范化形式:nfc
、nfd
、nfkc
和 nfkd
。
示例
1> string:equal("åäö", <<"åäö"/utf8>>).
true
2> string:equal("åäö", unicode:characters_to_nfd_binary("åäö")).
false
3> string:equal("åäö", unicode:characters_to_nfd_binary("ÅÄÖ"), true, nfc).
true
-spec find(String, SearchPattern) -> unicode:chardata() | nomatch when String :: unicode:chardata(), SearchPattern :: unicode:chardata().
-spec find(String, SearchPattern, Dir) -> unicode:chardata() | nomatch when String :: unicode:chardata(), SearchPattern :: unicode:chardata(), Dir :: direction().
删除 String
中 SearchPattern
之前的所有内容,并返回字符串的其余部分;如果未找到 SearchPattern
,则返回 nomatch
。Dir
可以是 leading
或 trailing
,表示要从哪个方向搜索字符。
示例
1> string:find("ab..cd..ef", ".").
"..cd..ef"
2> string:find(<<"ab..cd..ef">>, "..", trailing).
<<"..ef">>
3> string:find(<<"ab..cd..ef">>, "x", leading).
nomatch
4> string:find("ab..cd..ef", "x", trailing).
nomatch
-spec is_empty(String :: unicode:chardata()) -> boolean().
如果 String
是空字符串,则返回 true
,否则返回 false
。
示例
1> string:is_empty("foo").
false
2> string:is_empty(["",<<>>]).
true
-spec jaro_similarity(String1, String2) -> Similarity when String1 :: unicode:chardata(), String2 :: unicode:chardata(), Similarity :: float().
返回一个介于 +0.0
和 1.0
之间的浮点数,表示给定字符串之间的 Jaro 相似度。相似度较高的字符串得分会更接近 1.0
,+0.0
表示没有相似度,1.0
表示完全匹配。
示例
1> string:jaro_similarity("ditto", "ditto").
1.0
2> string:jaro_similarity("foo", "bar").
+0.0
3> string:jaro_similarity("michelle", "michael").
0.8690476190476191
4> string:jaro_similarity(<<"Édouard"/utf8>>, <<"Claude">>).
0.5317460317460317
两个字符串之间的 Jaro 距离可以使用 JaroDistance = 1.0 - JaroSimilarity
计算。
-spec length(String :: unicode:chardata()) -> non_neg_integer().
返回 String
中的字形集群数。
示例
1> string:length("ß↑e̊").
3
2> string:length(<<195,159,226,134,145,101,204,138>>).
3
-spec lexemes(String :: unicode:chardata(), SeparatorList :: [grapheme_cluster()]) -> [unicode:chardata()].
返回 String
中的词素列表,由 SeparatorList
中的字形集群分隔。
请注意,如本示例所示,String
中两个或多个相邻的分隔符字形簇被视为一个。也就是说,结果的词素列表中没有空字符串。另请参阅返回空字符串的 split/3
。
请注意,[$\r,$\n]
是一个字形簇。
示例
1> string:lexemes("abc de̊fxxghix jkl\r\nfoo", "x e" ++ [[$\r,$\n]]).
["abc","de̊f","ghi","jkl","foo"]
2> string:lexemes(<<"abc de̊fxxghix jkl\r\nfoo"/utf8>>, "x e" ++ [$\r,$\n]).
[<<"abc">>,<<"de̊f"/utf8>>,<<"ghi">>,<<"jkl\r\nfoo">>]
-spec lowercase(String :: unicode:chardata()) -> unicode:chardata().
将 String
转换为小写。
请注意,在将字符串转换为进行相等性测试时,应使用函数 casefold/1
。
示例
2> string:lowercase(string:uppercase("Michał")).
"michał"
-spec next_codepoint(String :: unicode:chardata()) -> maybe_improper_list(char(), unicode:chardata()) | {error, unicode:chardata()}.
返回 String
中的第一个码位,以及尾部中 String
的其余部分。如果 String
为空,则返回空列表;如果下一个字节无效,则返回 {error, String}
元组。
示例
1> string:next_codepoint(unicode:characters_to_binary("e̊fg")).
[101|<<"̊fg"/utf8>>]
-spec next_grapheme(String :: unicode:chardata()) -> maybe_improper_list(grapheme_cluster(), unicode:chardata()) | {error, unicode:chardata()}.
返回 String
中的第一个字形集群,以及尾部中 String
的其余部分。如果 String
为空,则返回空列表;如果下一个字节无效,则返回 {error, String}
元组。
示例
1> string:next_grapheme(unicode:characters_to_binary("e̊fg")).
["e̊"|<<"fg">>]
-spec nth_lexeme(String, N, SeparatorList) -> unicode:chardata() when String :: unicode:chardata(), N :: non_neg_integer(), SeparatorList :: [grapheme_cluster()].
返回 String
中第 N
个词素,其中词素由 SeparatorList
中的字形集群分隔。
示例
1> string:nth_lexeme("abc.de̊f.ghiejkl", 3, ".e").
"ghi"
-spec pad(String, Length) -> unicode:charlist() when String :: unicode:chardata(), Length :: integer().
-spec pad(String, Length, Dir) -> unicode:charlist() when String :: unicode:chardata(), Length :: integer(), Dir :: direction() | both.
-spec pad(String, Length, Dir, Char) -> unicode:charlist() when String :: unicode:chardata(), Length :: integer(), Dir :: direction() | both, Char :: grapheme_cluster().
使用字形集群 Char
将 String
填充到 Length
。Dir
可以是 leading
、trailing
或 both
,表示应在何处添加填充。
示例
1> string:pad(<<"He̊llö"/utf8>>, 8).
[<<72,101,204,138,108,108,195,182>>,32,32,32]
2> io:format("'~ts'~n",[string:pad("He̊llö", 8, leading)]).
' He̊llö'
3> io:format("'~ts'~n",[string:pad("He̊llö", 8, both)]).
' He̊llö '
-spec prefix(String :: unicode:chardata(), Prefix :: unicode:chardata()) -> nomatch | unicode:chardata().
如果 Prefix
是 String
的前缀,则删除它并返回 String
的其余部分,否则返回 nomatch
。
示例
1> string:prefix(<<"prefix of string">>, "pre").
<<"fix of string">>
2> string:prefix("pre", "prefix").
nomatch
-spec replace(String, SearchPattern, Replacement) -> [unicode:chardata()] when String :: unicode:chardata(), SearchPattern :: unicode:chardata(), Replacement :: unicode:chardata().
-spec replace(String, SearchPattern, Replacement, Where) -> [unicode:chardata()] when String :: unicode:chardata(), SearchPattern :: unicode:chardata(), Replacement :: unicode:chardata(), Where :: direction() | all.
将 String
中的 SearchPattern
替换为 Replacement
。Where
指示要替换 SearchPattern
的 leading
、trailing
或 all
次出现。
可以实现为
lists:join(Replacement, split(String, SearchPattern, Where)).
示例
1> string:replace(<<"ab..cd..ef">>, "..", "*").
[<<"ab">>,"*",<<"cd..ef">>]
2> string:replace(<<"ab..cd..ef">>, "..", "*", all).
[<<"ab">>,"*",<<"cd">>,"*",<<"ef">>]
-spec reverse(String :: unicode:chardata()) -> [grapheme_cluster()].
返回 String
中字形集群的反向列表。
示例
1> Reverse = string:reverse(unicode:characters_to_nfd_binary("ÅÄÖ")).
[[79,776],[65,776],[65,778]]
2> io:format("~ts~n",[Reverse]).
ÖÄÅ
-spec slice(String, Start) -> Slice when String :: unicode:chardata(), Start :: non_neg_integer(), Slice :: unicode:chardata().
-spec slice(String, Start, Length) -> Slice when String :: unicode:chardata(), Start :: non_neg_integer(), Length :: infinity | non_neg_integer(), Slice :: unicode:chardata().
返回 String
的子字符串,该子字符串最多包含 Length
个字形集群,从位置 Start
开始。
示例
1> string:slice(<<"He̊llö Wörld"/utf8>>, 4).
<<"ö Wörld"/utf8>>
2> string:slice(["He̊llö ", <<"Wörld"/utf8>>], 4,4).
"ö Wö"
3> string:slice(["He̊llö ", <<"Wörld"/utf8>>], 4,50).
"ö Wörld"
-spec split(String, SearchPattern) -> [unicode:chardata()] when String :: unicode:chardata(), SearchPattern :: unicode:chardata().
-spec split(String, SearchPattern, Where) -> [unicode:chardata()] when String :: unicode:chardata(), SearchPattern :: unicode:chardata(), Where :: direction() | all.
在遇到 SearchPattern
的位置拆分 String
,并返回剩余部分。Where
,默认为 leading
,指示 SearchPattern
的 leading
、trailing
或 all
次出现将拆分 String
。
示例
0> string:split("ab..bc..cd", "..").
["ab","bc..cd"]
1> string:split(<<"ab..bc..cd">>, "..", trailing).
[<<"ab..bc">>,<<"cd">>]
2> string:split(<<"ab..bc....cd">>, "..", all).
[<<"ab">>,<<"bc">>,<<>>,<<"cd">>]
-spec take(String, Characters) -> {Leading, Trailing} when String :: unicode:chardata(), Characters :: [grapheme_cluster()], Leading :: unicode:chardata(), Trailing :: unicode:chardata().
-spec take(String, Characters, Complement) -> {Leading, Trailing} when String :: unicode:chardata(), Characters :: [grapheme_cluster()], Complement :: boolean(), Leading :: unicode:chardata(), Trailing :: unicode:chardata().
-spec take(String, Characters, Complement, Dir) -> {Leading, Trailing} when String :: unicode:chardata(), Characters :: [grapheme_cluster()], Complement :: boolean(), Dir :: direction(), Leading :: unicode:chardata(), Trailing :: unicode:chardata().
只要字符是集合 Characters
的成员或集合 Characters
的补集,就从 String
中获取字符。Dir
可以是 leading
或 trailing
,表示要从哪个方向获取字符。
示例
5> string:take("abc0z123", lists:seq($a,$z)).
{"abc","0z123"}
6> string:take(<<"abc0z123">>, lists:seq($0,$9), true, leading).
{<<"abc">>,<<"0z123">>}
7> string:take("abc0z123", lists:seq($0,$9), false, trailing).
{"abc0z","123"}
8> string:take(<<"abc0z123">>, lists:seq($a,$z), true, trailing).
{<<"abc0z">>,<<"123">>}
-spec titlecase(String :: unicode:chardata()) -> unicode:chardata().
将 String
转换为首字母大写。
示例
1> string:titlecase("ß is a SHARP s").
"Ss is a SHARP s"
-spec to_float(String) -> {Float, Rest} | {error, Reason} when String :: unicode:chardata(), Float :: float(), Rest :: unicode:chardata(), Reason :: no_float | badarg.
参数 String
应该以有效的文本表示浮点数开头(数字为 ASCII 值)。浮点数之后字符串中的剩余字符将在 Rest
中返回。
示例
1> {F1,Fs} = string:to_float("1.0-1.0e-1"),
1> {F2,[]} = string:to_float(Fs),
1> F1+F2.
0.9
2> string:to_float("3/2=1.5").
{error,no_float}
3> string:to_float("-1.5eX").
{-1.5,"eX"}
-spec to_graphemes(String :: unicode:chardata()) -> [grapheme_cluster()].
将 String
转换为字形集群列表。
示例
1> string:to_graphemes("ß↑e̊").
[223,8593,[101,778]]
2> string:to_graphemes(<<"ß↑e̊"/utf8>>).
[223,8593,[101,778]]
-spec to_integer(String) -> {Int, Rest} | {error, Reason} when String :: unicode:chardata(), Int :: integer(), Rest :: unicode:chardata(), Reason :: no_integer | badarg.
参数 String
应该以有效的文本表示整数开头(数字为 ASCII 值)。整数之后字符串中的剩余字符将在 Rest
中返回。
示例
1> {I1,Is} = string:to_integer("33+22"),
1> {I2,[]} = string:to_integer(Is),
1> I1-I2.
11
2> string:to_integer("0.5").
{0,".5"}
3> string:to_integer("x=2").
{error,no_integer}
-spec trim(String) -> unicode:chardata() when String :: unicode:chardata().
等效于 trim(String, both)
。
-spec trim(String, Dir) -> unicode:chardata() when String :: unicode:chardata(), Dir :: direction() | both.
等效于 trim(String, Dir, Whitespace})
,其中 Whitespace
是不可中断的空格码位集,定义为 Unicode 标准附件 #31 中的 Pattern_White_Space。
-spec trim(String, Dir, Characters) -> unicode:chardata() when String :: unicode:chardata(), Dir :: direction() | both, Characters :: [grapheme_cluster()].
返回一个字符串,其中删除了前导或尾随或两者都删除了的 Characters
。
Dir
可以是 leading
、trailing
或 both
,指示要从哪个方向移除字符。
请注意,根据 Unicode 标准,[$\r,$\n]
是一个字素簇。
示例
1> string:trim("\t Hello \n").
"Hello"
2> string:trim(<<"\t Hello \n">>, leading).
<<"Hello \n">>
3> string:trim(<<".Hello.\n">>, trailing, "\n.").
<<".Hello">>
-spec uppercase(String :: unicode:chardata()) -> unicode:chardata().
将 String
转换为大写。
另请参阅 titlecase/1
。
示例
1> string:uppercase("Michał").
"MICHAŁ"
已过时的 API 函数
-spec centre(String, Number) -> Centered when String :: string(), Centered :: string(), Number :: non_neg_integer().
-spec centre(String, Number, Character) -> Centered when String :: string(), Centered :: string(), Number :: non_neg_integer(), Character :: char().
返回一个字符串,其中 String
位于字符串中心,并被空格或 Character
包围。结果字符串的长度为 Number
。
-spec chars(Character, Number) -> String when Character :: char(), Number :: non_neg_integer(), String :: string().
-spec chars(Character, Number, Tail) -> String when Character :: char(), Number :: non_neg_integer(), Tail :: string(), String :: string().
返回一个由 Number
个字符 Character
组成的字符串。或者,该字符串可以以字符串 Tail
结尾。
此函数已过时。请使用 lists:duplicate/2
。
-spec chr(String, Character) -> Index when String :: string(), Character :: char(), Index :: non_neg_integer().
返回 Character
在 String
中首次出现的索引。如果 Character
未出现,则返回 0
。
-spec concat(String1, String2) -> String3 when String1 :: string(), String2 :: string(), String3 :: string().
连接 String1
和 String2
以形成新的字符串 String3
,并返回该字符串。
此函数已过时。请使用 [String1, String2]
作为 Data
参数,并调用 unicode:characters_to_list/2
或 unicode:characters_to_binary/2
来展平输出。
-spec copies(String, Number) -> Copies when String :: string(), Copies :: string(), Number :: non_neg_integer().
返回一个包含 String
重复 Number
次的字符串。
此函数已过时。请使用 lists:duplicate/2
。
-spec cspan(String, Chars) -> Length when String :: string(), Chars :: string(), Length :: non_neg_integer().
返回 String
的最大初始段的长度,该段完全由不属于 Chars
的字符组成。
示例
1> string:cspan("\t abcdef", " \t").
0
-spec join(StringList, Separator) -> String when StringList :: [string()], Separator :: string(), String :: string().
返回一个字符串,其中 StringList
的元素由 Separator
中的字符串分隔。
此函数已过时。请使用 lists:join/2
。
示例
1> join(["one", "two", "three"], ", ").
"one, two, three"
-spec left(String, Number) -> Left when String :: string(), Left :: string(), Number :: non_neg_integer().
-spec left(String, Number, Character) -> Left when String :: string(), Left :: string(), Number :: non_neg_integer(), Character :: char().
返回根据 Number
调整长度的 String
。左边距是固定的。如果 length(String)
< Number
,则使用空格或 Character
填充 String
。
示例
1> string:left("Hello",10,$.).
"Hello....."
-spec len(String) -> Length when String :: string(), Length :: non_neg_integer().
返回 String
中的字符数。
-spec rchr(String, Character) -> Index when String :: string(), Character :: char(), Index :: non_neg_integer().
返回 Character
在 String
中最后一次出现的索引。如果 Character
未出现,则返回 0
。
-spec right(String, Number) -> Right when String :: string(), Right :: string(), Number :: non_neg_integer().
-spec right(String, Number, Character) -> Right when String :: string(), Right :: string(), Number :: non_neg_integer(), Character :: char().
返回根据 Number
调整长度的 String
。右边距是固定的。如果 (String)
的长度 < Number
,则使用空格或 Character
填充 String
。
示例
1> string:right("Hello", 10, $.).
".....Hello"
-spec rstr(String, SubString) -> Index when String :: string(), SubString :: string(), Index :: non_neg_integer().
返回 SubString
在 String
中最后一次出现的位置的起始索引。如果 SubString
在 String
中不存在,则返回 0
。
示例
1> string:rstr(" Hello Hello World World ", "Hello World").
8
-spec span(String, Chars) -> Length when String :: string(), Chars :: string(), Length :: non_neg_integer().
返回由 Chars
中字符组成的 String
的最大初始段的长度。
示例
1> string:span("\t abcdef", " \t").
5
-spec str(String, SubString) -> Index when String :: string(), SubString :: string(), Index :: non_neg_integer().
返回 SubString
在 String
中第一次出现的位置的起始索引。如果 SubString
在 String
中不存在,则返回 0
。
示例
1> string:str(" Hello Hello World World ", "Hello World").
8
等效于 strip(String, both)
。
-spec strip(String, Direction, Character) -> Stripped when String :: string(), Stripped :: string(), Direction :: left | right | both, Character :: char().
返回一个字符串,其中已移除前导或尾随,或两者都有的空格或若干个 Character
。
Direction
,可以是 left
、right
或 both
,表示要从哪个方向删除空格。strip/1
等同于 strip(String, both)
。
示例
1> string:strip("...Hello.....", both, $.).
"Hello"
-spec sub_string(String, Start) -> SubString when String :: string(), SubString :: string(), Start :: pos_integer().
-spec sub_string(String, Start, Stop) -> SubString when String :: string(), SubString :: string(), Start :: pos_integer(), Stop :: pos_integer().
返回 String
的一个子字符串,该子字符串从位置 Start
开始到字符串的末尾,或到并包括位置 Stop
。
示例
1> sub_string("Hello World", 4, 8).
"lo Wo"
-spec sub_word(String, Number, Character) -> Word when String :: string(), Word :: string(), Number :: integer(), Character :: char().
返回 String
中位于位置 Number
的单词。单词由空格或 Character
分隔。
此函数已过时。请使用 nth_lexeme/3
。
示例
1> string:sub_word(" Hello old boy !",3,$o).
"ld b"
-spec substr(String, Start) -> SubString when String :: string(), SubString :: string(), Start :: pos_integer().
-spec substr(String, Start, Length) -> SubString when String :: string(), SubString :: string(), Start :: pos_integer(), Length :: non_neg_integer().
返回 String
的一个子字符串,该子字符串从位置 Start
开始,到字符串的末尾或长度为 Length
的位置结束。
示例
1> substr("Hello World", 4, 5).
"lo Wo"
-spec to_lower(String) -> Result when String :: io_lib:latin1_string(), Result :: io_lib:latin1_string(); (Char) -> CharResult when Char :: char(), CharResult :: char().
指定的字符串或字符将进行大小写转换。请注意,支持的字符集是 ISO/IEC 8859-1(也称为 Latin 1);此集合之外的所有值都不会更改。
此函数已过时,请使用 lowercase/1
、titlecase/1
或 casefold/1
。
-spec to_upper(String) -> Result when String :: io_lib:latin1_string(), Result :: io_lib:latin1_string(); (Char) -> CharResult when Char :: char(), CharResult :: char().
指定的字符串或字符将进行大小写转换。请注意,支持的字符集是 ISO/IEC 8859-1(也称为 Latin 1);此集合之外的所有值都不会更改。
此函数已过时,请使用 uppercase/1
、titlecase/1
或 casefold/1
。
-spec tokens(String, SeparatorList) -> Tokens when String :: string(), SeparatorList :: string(), Tokens :: [Token :: nonempty_string()].
返回 String
中的标记列表,标记由 SeparatorList
中的字符分隔。
示例
1> tokens("abc defxxghix jkl", "x ").
["abc", "def", "ghi", "jkl"]
请注意,如本例所示,String
中两个或多个相邻的分隔符被视为一个。也就是说,生成的标记列表中没有空字符串。
-spec words(String) -> Count when String :: string(), Count :: pos_integer().
等效于 words(String, $ )
。
-spec words(String, Character) -> Count when String :: string(), Character :: char(), Count :: pos_integer().
返回 String
中的单词数,单词由空格或 Character
分隔。
示例
1> words(" Hello old boy!", $o).
4