檢視原始碼 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/3replace/3split/2split/3trim/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

如果 AB 相等,則返回 true,否則返回 false

刪除 StringSearchPattern 之前的任何內容,並返回字串的其餘部分,如果找不到 SearchPattern 則返回 nomatchDir 可以是 leadingtrailing,表示要從哪個方向搜尋字元。

如果 String 是空字串,則返回 true,否則返回 false

返回一個介於 +0.01.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 中的字素叢集分隔。

使用字素叢集 CharString 填充到 LengthDir 可以是 leadingtrailingboth,表示應在哪裡添加填充。

如果 PrefixString 的前綴,則刪除它並返回 String 的剩餘部分,否則返回 nomatch

String 中的 SearchPattern 替換為 ReplacementWhere 表示要替換 SearchPatternleadingtrailingall 匹配項。

返回 String 中字素叢集的反向列表。

返回 String 的子字串,最多 Length 個字素叢集,從位置 Start 開始。

在遇到 SearchPattern 的地方分割 String,並返回剩餘部分。Where 預設為 leading,表示 SearchPatternleadingtrailingall 匹配項將分割 String

String 中獲取字元,只要字元是集合 Characters 的成員,或是集合 Characters 的補集。Dir 可以是 leadingtrailing,表示要從哪個方向獲取字元。

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

String1String2 連接起來,形成一個新的字串 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 填補。

傳回 SubStringString 中最後一次出現的起始位置。如果 SubString 不存在於 String 中,則傳回 0

傳回 String 中完全由 Chars 中的字元組成的最大初始片段的長度。

傳回 SubStringString 中第一次出現的起始位置。如果 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 分隔。

類型

此類型的連結

direction()

檢視原始碼 (未匯出)
-type direction() :: leading | trailing.
-type grapheme_cluster() :: char() | [char()].

使用者感知到的字元,由一個或多個碼位組成。

函式

此函式的連結

casefold(String)

檢視原始碼 (自 OTP 20.0 起)
-spec casefold(String :: unicode:chardata()) -> unicode:chardata().

String 轉換為不區分大小寫的可比較字串。當要比較兩個字串是否相等時,casefold/1 函數優先於 lowercase/1。另請參閱 equal/4

範例

1> string:casefold("Ω and ẞ SHARP S").
"ω and ss sharp s"
此函式的連結

chomp(String)

檢視原始碼 (自 OTP 20.0 起)
-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)

此函式的連結

equal(A, B, IgnoreCase)

檢視原始碼 (自 OTP 20.0 起)
-spec equal(A, B, IgnoreCase) -> boolean()
               when A :: unicode:chardata(), B :: unicode:chardata(), IgnoreCase :: boolean().

等效於 equal(A, B, IgnoreCase, none)

此函式的連結

equal(A, B, IgnoreCase, Norm)

檢視原始碼 (自 OTP 20.0 起)
-spec equal(A, B, IgnoreCase, Norm) -> boolean()
               when
                   A :: unicode:chardata(),
                   B :: unicode:chardata(),
                   IgnoreCase :: boolean(),
                   Norm :: none | nfc | nfd | nfkc | nfkd.

如果 AB 相等,則返回 true,否則返回 false

如果 IgnoreCasetrue,則函式會在相等性測試之前即時執行 casefold

如果 Norm 不是 none,則函式會在相等性測試之前即時套用正規化。有四種可用的正規化形式:nfcnfdnfkcnfkd

範例

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
此函式的連結

find(String, SearchPattern)

檢視原始碼 (自 OTP 20.0 起)
-spec find(String, SearchPattern) -> unicode:chardata() | nomatch
              when String :: unicode:chardata(), SearchPattern :: unicode:chardata().

等效於 find(String, SearchPattern, leading)

此函式的連結

find(String, SearchPattern, Dir)

檢視原始碼 (自 OTP 20.0 起)
-spec find(String, SearchPattern, Dir) -> unicode:chardata() | nomatch
              when String :: unicode:chardata(), SearchPattern :: unicode:chardata(), Dir :: direction().

刪除 StringSearchPattern 之前的任何內容,並返回字串的其餘部分,如果找不到 SearchPattern 則返回 nomatchDir 可以是 leadingtrailing,表示要從哪個方向搜尋字元。

範例

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
此函式的連結

is_empty(String)

檢視原始碼 (自 OTP 20.0 起)
-spec is_empty(String :: unicode:chardata()) -> boolean().

如果 String 是空字串,則返回 true,否則返回 false

範例

1> string:is_empty("foo").
false
2> string:is_empty(["",<<>>]).
true
此函式的連結

jaro_similarity(String1, String2)

檢視原始碼 (自 OTP 27.0 起)
-spec jaro_similarity(String1, String2) -> Similarity
                         when
                             String1 :: unicode:chardata(),
                             String2 :: unicode:chardata(),
                             Similarity :: float().

返回一個介於 +0.01.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 計算。

此函式的連結

length(String)

檢視原始碼 (自 OTP 20.0 起)
-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
此函式的連結

lexemes(String, SeparatorList)

檢視原始碼 (自 OTP 20.0 起)
-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">>]
此函式的連結

lowercase(String)

檢視原始碼 (自 OTP 20.0 起)
-spec lowercase(String :: unicode:chardata()) -> unicode:chardata().

String 轉換為小寫。

請注意,在轉換要測試相等性的字串時,應使用函式 casefold/1

範例

2> string:lowercase(string:uppercase("Michał")).
"michał"
此函式的連結

next_codepoint(String)

檢視原始碼 (自 OTP 20.0 起)
-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>>]
此函式的連結

next_grapheme(String)

檢視原始碼 (自 OTP 20.0 起)
-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">>]
此函式的連結

nth_lexeme(String, N, SeparatorList)

檢視原始碼 (自 OTP 20.0 起)
-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"
此函式的連結

pad(String, Length)

檢視原始碼 (自 OTP 20.0 起)
-spec pad(String, Length) -> unicode:charlist() when String :: unicode:chardata(), Length :: integer().

等效於 pad(String, Length, trailing)

此函式的連結

pad(String, Length, Dir)

檢視原始碼 (自 OTP 20.0 起)
-spec pad(String, Length, Dir) -> unicode:charlist()
             when String :: unicode:chardata(), Length :: integer(), Dir :: direction() | both.

等效於 pad(String, Length, Dir, $ )

此函式的連結

pad(String, Length, Dir, Char)

檢視原始碼 (自 OTP 20.0 起)
-spec pad(String, Length, Dir, Char) -> unicode:charlist()
             when
                 String :: unicode:chardata(),
                 Length :: integer(),
                 Dir :: direction() | both,
                 Char :: grapheme_cluster().

使用字素叢集 CharString 填充到 LengthDir 可以是 leadingtrailingboth,表示應在哪裡添加填充。

範例

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ö  '
此函式的連結

prefix(String, Prefix)

檢視原始碼 (自 OTP 20.0 起)
-spec prefix(String :: unicode:chardata(), Prefix :: unicode:chardata()) -> nomatch | unicode:chardata().

如果 PrefixString 的前綴,則刪除它並返回 String 的剩餘部分,否則返回 nomatch

範例

1> string:prefix(<<"prefix of string">>, "pre").
<<"fix of string">>
2> string:prefix("pre", "prefix").
nomatch
此函式的連結

replace(String, SearchPattern, Replacement)

檢視原始碼 (自 OTP 20.0 起)
-spec replace(String, SearchPattern, Replacement) -> [unicode:chardata()]
                 when
                     String :: unicode:chardata(),
                     SearchPattern :: unicode:chardata(),
                     Replacement :: unicode:chardata().

等效於 replace(String, SearchPattern, Replacement, leading)

此函式的連結

replace(String, SearchPattern, Replacement, Where)

檢視原始碼 (自 OTP 20.0 起)
-spec replace(String, SearchPattern, Replacement, Where) -> [unicode:chardata()]
                 when
                     String :: unicode:chardata(),
                     SearchPattern :: unicode:chardata(),
                     Replacement :: unicode:chardata(),
                     Where :: direction() | all.

String 中的 SearchPattern 替換為 ReplacementWhere 表示要替換 SearchPatternleadingtrailingall 匹配項。

可以實作為

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">>]
此函式的連結

reverse(String)

檢視原始碼 (自 OTP 20.0 起)
-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]).
ÖÄÅ
此函式的連結

slice(String, Start)

檢視原始碼 (自 OTP 20.0 起)
-spec slice(String, Start) -> Slice
               when
                   String :: unicode:chardata(), Start :: non_neg_integer(), Slice :: unicode:chardata().

等效於 slice(String, Length, infinity)

此函式的連結

slice(String, Start, Length)

檢視原始碼 (自 OTP 20.0 起)
-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"
此函式的連結

split(String, SearchPattern)

檢視原始碼 (自 OTP 20.0 起)
-spec split(String, SearchPattern) -> [unicode:chardata()]
               when String :: unicode:chardata(), SearchPattern :: unicode:chardata().

等效於 split(String, SearchPattern, leading)

此函式的連結

split(String, SearchPattern, Where)

檢視原始碼 (自 OTP 20.0 起)
-spec split(String, SearchPattern, Where) -> [unicode:chardata()]
               when
                   String :: unicode:chardata(),
                   SearchPattern :: unicode:chardata(),
                   Where :: direction() | all.

在遇到 SearchPattern 的地方分割 String,並返回剩餘部分。Where 預設為 leading,表示 SearchPatternleadingtrailingall 匹配項將分割 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">>]
此函式的連結

take(String, Characters)

檢視原始碼 (自 OTP 20.0 起)
-spec take(String, Characters) -> {Leading, Trailing}
              when
                  String :: unicode:chardata(),
                  Characters :: [grapheme_cluster()],
                  Leading :: unicode:chardata(),
                  Trailing :: unicode:chardata().

等效於 take(String, Characters, false)

此函式的連結

take(String, Characters, Complement)

檢視原始碼 (自 OTP 20.0 起)
-spec take(String, Characters, Complement) -> {Leading, Trailing}
              when
                  String :: unicode:chardata(),
                  Characters :: [grapheme_cluster()],
                  Complement :: boolean(),
                  Leading :: unicode:chardata(),
                  Trailing :: unicode:chardata().

等效於 take(String, Characters, Complement, leading)

此函式的連結

take(String, Characters, Complement, Dir)

檢視原始碼 (自 OTP 20.0 起)
-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 可以是 leadingtrailing,表示要從哪個方向獲取字元。

範例

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">>}
此函式的連結

titlecase(String)

檢視原始碼 (自 OTP 20.0 起)
-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"}
此函式的連結

to_graphemes(String)

檢視原始碼 (自 OTP 20.0 起)
-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}
此函式的連結

trim(String)

檢視原始碼 (自 OTP 20.0 起)
-spec trim(String) -> unicode:chardata() when String :: unicode:chardata().

等效於 trim(String, both)

此函式的連結

trim(String, Dir)

檢視原始碼 (自 OTP 20.0 起)
-spec trim(String, Dir) -> unicode:chardata()
              when String :: unicode:chardata(), Dir :: direction() | both.

等效於 trim(String, Dir, Whitespace}),其中 Whitespace 是不可斷開的空格碼位集,在 Unicode 標準附錄 #31 中定義為 Pattern_White_Space。

此函式的連結

trim(String, Dir, Characters)

檢視原始碼 (自 OTP 20.0 起)
-spec trim(String, Dir, Characters) -> unicode:chardata()
              when
                  String :: unicode:chardata(),
                  Dir :: direction() | both,
                  Characters :: [grapheme_cluster()].

返回一個字串,其中已刪除前導或尾隨,或兩者的 Characters

Dir 可以是 leadingtrailingboth,表示要從哪個方向移除字元。

請注意,根據 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">>
此函式的連結

uppercase(String)

檢視原始碼 (自 OTP 20.0 起)
-spec uppercase(String :: unicode:chardata()) -> unicode:chardata().

String 轉換為大寫。

另請參閱 titlecase/1

範例

1> string:uppercase("Michał").
"MICHAŁ"

過時的 API 函式

此函式的連結

centre(String, Number)

檢視原始碼
-spec centre(String, Number) -> Centered
                when String :: string(), Centered :: string(), Number :: non_neg_integer().

等效於 centre(String, Number, $ )

此函式的連結

centre(String, Number, Character)

檢視原始碼
-spec centre(String, Number, Character) -> Centered
                when
                    String :: string(),
                    Centered :: string(),
                    Number :: non_neg_integer(),
                    Character :: char().

返回一個字串,其中 String 在字串中居中,並由空格或 Character 包圍。結果字串的長度為 Number

此函式已過時。請改用 pad/3

此函式的連結

chars(Character, Number)

檢視原始碼
-spec chars(Character, Number) -> String
               when Character :: char(), Number :: non_neg_integer(), String :: string().

等效於 chars(Character, Number, [])

此函式的連結

chars(Character, Number, Tail)

檢視原始碼
-spec chars(Character, Number, Tail) -> String
               when
                   Character :: char(),
                   Number :: non_neg_integer(),
                   Tail :: string(),
                   String :: string().

返回一個由 Number 個字元 Character 組成的字串。或者,字串可以以字串 Tail 結尾。

此函式已過時。請改用 lists:duplicate/2

此函式的連結

chr(String, Character)

檢視原始碼
-spec chr(String, Character) -> Index
             when String :: string(), Character :: char(), Index :: non_neg_integer().

返回 String 中第一次出現 Character 的索引。如果 Character 沒有出現,則返回 0

此函式已過時。請改用 find/2

此函式的連結

concat(String1, String2)

檢視原始碼
-spec concat(String1, String2) -> String3
                when String1 :: string(), String2 :: string(), String3 :: string().

String1String2 連接起來,形成一個新的字串 String3,並返回該字串。

此函式已過時。請使用 [String1, String2] 作為 Data 參數,並呼叫 unicode:characters_to_list/2unicode:characters_to_binary/2 來展平輸出。

此函式的連結

copies(String, Number)

檢視原始碼
-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 的字元組成。

此函式已過時。請改用 take/3

範例

1> string:cspan("\t    abcdef", " \t").
0
此函式的連結

join(StringList, Separator)

檢視原始碼
-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().

等效於 left(String, Number, $ )

此函式的連結

left(String, Number, Character)

檢視原始碼
-spec left(String, Number, Character) -> Left
              when
                  String :: string(), Left :: string(), Number :: non_neg_integer(), Character :: char().

返回根據 Number 調整長度的 String。左邊界是固定的。如果 length(String) < Number,則使用空格或 Character 填充 String

此函式已過時。請改用 pad/2pad/3

範例

1> string:left("Hello",10,$.).
"Hello....."
-spec len(String) -> Length when String :: string(), Length :: non_neg_integer().

返回 String 中的字元數。

此函式已過時。請改用 length/1

此函式的連結

rchr(String, Character)

檢視原始碼
-spec rchr(String, Character) -> Index
              when String :: string(), Character :: char(), Index :: non_neg_integer().

返回 String 中最後一次出現 Character 的索引。如果 Character 沒有出現,則返回 0

此函式已過時。請改用 find/3

-spec right(String, Number) -> Right
               when String :: string(), Right :: string(), Number :: non_neg_integer().

等同於 right(String, Number, $ )

此函式的連結

right(String, Number, Character)

檢視原始碼
-spec right(String, Number, Character) -> Right
               when
                   String :: string(),
                   Right :: string(),
                   Number :: non_neg_integer(),
                   Character :: char().

傳回一個 String,其長度會根據 Number 調整。右邊界是固定的。如果 (String) 的長度 < Number,則 String 會以空格或 Character 填補。

此函式已過時。請改用 pad/3

範例

1> string:right("Hello", 10, $.).
".....Hello"
此函式的連結

rstr(String, SubString)

檢視原始碼
-spec rstr(String, SubString) -> Index
              when String :: string(), SubString :: string(), Index :: non_neg_integer().

傳回 SubStringString 中最後一次出現的起始位置。如果 SubString 不存在於 String 中,則傳回 0

此函式已過時。請改用 find/3

範例

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 中的字元組成的最大初始片段的長度。

此函式已過時。請改用 take/2

範例

1> string:span("\t    abcdef", " \t").
5
此函式的連結

str(String, SubString)

檢視原始碼
-spec str(String, SubString) -> Index
             when String :: string(), SubString :: string(), Index :: non_neg_integer().

傳回 SubStringString 中第一次出現的起始位置。如果 SubString 不存在於 String 中,則傳回 0

此函式已過時。請改用 find/2

範例

1> string:str(" Hello Hello World World ", "Hello World").
8
-spec strip(string()) -> string().

等同於 strip(String, both)

此函式的連結

strip(String, Direction)

檢視原始碼
-spec strip(String, Direction) -> Stripped
               when String :: string(), Stripped :: string(), Direction :: left | right | both.

等同於 strip(String, Direction, $ )

此函式的連結

strip(String, Direction, Character)

檢視原始碼
-spec strip(String, Direction, Character) -> Stripped
               when
                   String :: string(),
                   Stripped :: string(),
                   Direction :: left | right | both,
                   Character :: char().

傳回一個字串,其中已移除開頭或結尾,或兩者的空格或數個 Character

Direction,可以是 leftrightboth,表示要從哪個方向移除空白。 strip/1 等同於 strip(String, both)

此函式已過時。請改用 trim/3

範例

1> string:strip("...Hello.....", both, $.).
"Hello"
此函式的連結

sub_string(String, Start)

檢視原始碼
-spec sub_string(String, Start) -> SubString
                    when String :: string(), SubString :: string(), Start :: pos_integer().

等同於 sub_string(String, Start, string:length(String))

此函式的連結

sub_string(String, Start, Stop)

檢視原始碼
-spec sub_string(String, Start, Stop) -> SubString
                    when
                        String :: string(),
                        SubString :: string(),
                        Start :: pos_integer(),
                        Stop :: pos_integer().

傳回 String 的子字串,從位置 Start 開始到字串結尾,或到包含位置 Stop

此函式已過時。請改用 slice/3

範例

1> sub_string("Hello World", 4, 8).
"lo Wo"
此函式的連結

sub_word(String, Number)

檢視原始碼
-spec sub_word(String, Number) -> Word when String :: string(), Word :: string(), Number :: integer().

等同於 sub_word(String, Number, $ )

此函式的連結

sub_word(String, Number, Character)

檢視原始碼
-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().

等同於 substr(String, Start, string:length(String) - Start)

此函式的連結

substr(String, Start, Length)

檢視原始碼
-spec substr(String, Start, Length) -> SubString
                when
                    String :: string(),
                    SubString :: string(),
                    Start :: pos_integer(),
                    Length :: non_neg_integer().

傳回 String 的子字串,從位置 Start 開始,到字串結尾或長度 Length 結束。

此函式已過時。請改用 slice/3

範例

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/1titlecase/1casefold/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/1titlecase/1casefold/1

此函式的連結

tokens(String, SeparatorList)

檢視原始碼
-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 中兩個或更多相鄰的分隔符號會被視為一個。也就是說,產生的詞彙列表裡不會有空字串。

此函式已過時。請改用 lexemes/2

-spec words(String) -> Count when String :: string(), Count :: pos_integer().

等同於 words(String, $ )

此函式的連結

words(String, Character)

檢視原始碼
-spec words(String, Character) -> Count
               when String :: string(), Character :: char(), Count :: pos_integer().

傳回 String 中的單字數,單字以空格或 Character 分隔。

此函式已過時。請改用 lexemes/2

範例

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