檢視原始碼 string (stdlib v6.2)
字串處理函數。
此模組提供字串處理的函數。
在此模組中,字串以 unicode:chardata/0
表示,也就是碼位 (codepoint) 的列表、帶有 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
此模組操作於字素叢集 (grapheme cluster)。字素叢集是一個使用者感知到的字元,可以由數個碼位表示。
"å" [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
。
從 String
中獲取字元,只要字元是集合 Characters
的成員,或是集合 Characters
的補集。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
結尾。
返回 String
中第一次出現 Character
的索引。如果 Character
沒有出現,則返回 0
。
將 String1
和 String2
連接起來,形成一個新的字串 String3
,並返回該字串。
返回一個包含 String
重複 Number
次的字串。
返回 String
的最大初始段的長度,該段完全由不屬於 Chars
的字元組成。
返回一個字串,其中 StringList
的元素由 Separator
中的字串分隔。
返回根據 Number
調整長度的 String
。左邊界是固定的。如果 length(String)
< Number
,則使用空格或 Character
填充 String
。
返回 String
中的字元數。
返回 String
中最後一次出現 Character
的索引。如果 Character
沒有出現,則返回 0
。
傳回一個 String
,其長度會根據 Number
調整。右邊界是固定的。如果 (String)
的長度 < Number
,則 String
會以空格或 Character
填補。
傳回 SubString
在 String
中最後一次出現的起始位置。如果 SubString
不存在於 String
中,則傳回 0
。
傳回 String
中完全由 Chars
中的字元組成的最大初始片段的長度。
傳回 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().
從 String
中獲取字元,只要字元是集合 Characters
的成員,或是集合 Characters
的補集。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().
返回 String
中第一次出現 Character
的索引。如果 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().
返回 String
中最後一次出現 Character
的索引。如果 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().
傳回一個 String
,其長度會根據 Number
調整。右邊界是固定的。如果 (String)
的長度 < Number
,則 String
會以空格或 Character
填補。
範例
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().
傳回 String
中完全由 Chars
中的字元組成的最大初始片段的長度。
範例
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