文字列操作のための関数
文字列の検索や文字列の置換に関する関数は別々に説明されています。
empty
入力文字列が空であるかどうかをチェックします。文字列は、スペースやヌルバイトを含んでいる場合でも、バイトが1つ以上含まれている場合、非空と見なされます。
構文
引数
x
— 入力値。String。
返される値
- 空文字列の場合は
1
を、非空文字列の場合は0
を返します。UInt8。
例
結果:
notEmpty
入力文字列が非空であるかどうかをチェックします。文字列は、スペースやヌルバイトを含んでいる場合でも、バイトが1つ以上含まれている場合、非空と見なされます。
構文
引数
x
— 入力値。String。
返される値
- 非空文字列の場合は
1
を、空文字列の場合は0
を返します。UInt8。
例
結果:
length
文字列の長さをバイト単位で返します。文字数やUnicodeコードポイントではなく、バイト単位で長さを返します。この関数は配列にも機能します。
エイリアス: OCTET_LENGTH
構文
引数
返される値
- バイト数で表された文字列または配列
s
の長さ。UInt64。
例
クエリ:
結果:
クエリ:
結果:
lengthUTF8
文字列の長さをUnicodeコードポイント単位で返します。バイトや文字数ではなく、Unicodeコードポイント単位で長さを返します。文字列が有効なUTF-8エンコードのテキストであると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
エイリアス:
CHAR_LENGTH
CHARACTER_LENGTH
構文
引数
s
— 有効なUTF-8エンコードのテキストを含む文字列。String。
返される値
- Unicodeコードポイント単位で表された文字列
s
の長さ。UInt64。
例
クエリ:
結果:
left
指定された offset
から左からの文字列 s
の部分文字列を返します。
構文
引数
s
— 部分文字列を計算するための文字列。String または FixedString。offset
— オフセットのバイト数です。(U)Int*。
返される値
- 正の
offset
の場合: 文字列の左側からoffset
バイト数の部分文字列。 - 負の
offset
の場合: 文字列の左側からlength(s) - |offset|
バイト数の部分文字列。 - 長さが 0 の場合は、空の文字列を返します。
例
クエリ:
結果:
クエリ:
結果:
leftUTF8
指定された offset
から左からのUTF-8エンコードされた文字列 s
の部分文字列を返します。
構文
引数
s
— 部分文字列を計算するためのUTF-8エンコードされた文字列。String または FixedString。offset
— オフセットのバイト数です。(U)Int*。
返される値
- 正の
offset
の場合: 文字列の左側からoffset
バイト数の部分文字列。 - 負の
offset
の場合: 文字列の左側からlength(s) - |offset|
バイト数の部分文字列。 - 長さが 0 の場合は、空の文字列を返します。
例
クエリ:
結果:
クエリ:
結果:
leftPad
文字列を左からスペースまたは指定した文字列でパディングし、結果の文字列が指定された length
に達するまで繰り返します。
構文
エイリアス: LPAD
引数
string
— パディングすべき入力文字列。String。length
— 結果の文字列の長さ。UInt or Int。入力文字列の長さより小さい場合は、入力文字列がlength
文字に短縮されます。pad_string
— 入力文字列をパディングするための文字列。String。オプション。指定しない場合は、入力文字列はスペースでパディングされます。
返される値
- 指定された長さの左パディングされた文字列。String。
例
結果:
leftPadUTF8
文字列を左からスペースまたは指定した文字列でパディングし、結果の文字列が指定された長さに達するまで繰り返します。leftPadとは異なり、文字列の長さはコードポイントで測定されます。
構文
引数
string
— パディングすべき入力文字列。String。length
— 結果の文字列の長さ。UInt or Int。入力文字列の長さより小さい場合は、入力文字列がlength
文字に短縮されます。pad_string
— 入力文字列をパディングするための文字列。String。オプション。指定しない場合は、入力文字列はスペースでパディングされます。
返される値
- 指定された長さの左パディングされた文字列。String。
例
結果:
right
指定された offset
から右からの文字列 s
の部分文字列を返します。
構文
引数
s
— 部分文字列を計算するための文字列。String または FixedString。offset
— オフセットのバイト数です。(U)Int*。
返される値
- 正の
offset
の場合: 文字列の右側からoffset
バイト数の部分文字列。 - 負の
offset
の場合: 文字列の右側からlength(s) - |offset|
バイト数の部分文字列。 - 長さが 0 の場合は、空の文字列を返します。
例
クエリ:
結果:
クエリ:
結果:
rightUTF8
指定された offset
から右からのUTF-8エンコードされた文字列 s
の部分文字列を返します。
構文
引数
s
— 部分文字列を計算するためのUTF-8エンコードされた文字列。String または FixedString。offset
— オフセットのバイト数です。(U)Int*。
返される値
- 正の
offset
の場合: 文字列の右側からoffset
バイト数の部分文字列。 - 負の
offset
の場合: 文字列の右側からlength(s) - |offset|
バイト数の部分文字列。 - 長さが 0 の場合は、空の文字列を返します。
例
クエリ:
結果:
クエリ:
結果:
rightPad
文字列を右からスペースまたは指定した文字列でパディングし、結果の文字列が指定された length
に達するまで繰り返します。
構文
エイリアス: RPAD
引数
string
— パディングすべき入力文字列。String。length
— 結果の文字列の長さ。UInt or Int。入力文字列の長さより小さい場合は、入力文字列がlength
文字に短縮されます。pad_string
— 入力文字列をパディングするための文字列。String。オプション。指定しない場合は、入力文字列はスペースでパディングされます。
返される値
- 指定された長さの右パディングされた文字列。String。
例
結果:
rightPadUTF8
文字列を右からスペースまたは指定した文字列でパディングし、結果の文字列が指定された長さに達するまで繰り返します。rightPadとは異なり、文字列の長さはコードポイントで測定されます。
構文
引数
string
— パディングすべき入力文字列。String。length
— 結果の文字列の長さ。UInt or Int。入力文字列の長さより小さい場合は、入力文字列がlength
文字に短縮されます。pad_string
— 入力文字列をパディングするための文字列。String。オプション。指定しない場合は、入力文字列はスペースでパディングされます。
返される値
- 指定された長さの右パディングされた文字列。String。
例
結果:
compareSubstrings
二つの文字列を辞書式順序で比較します。
構文
引数
string1
— 比較する最初の文字列。Stringstring2
- 比較する第二の文字列。Stringstring1_offset
—string1
での比較の開始位置 (ゼロベース)。UInt*。string2_offset
—string2
での比較の開始位置 (ゼロベース)。UInt*。num_bytes
— 両方の文字列で比較する最大バイト数。string_offset
+num_bytes
が入力文字列の終わりを超える場合、num_bytes
はそれに応じて減少します。UInt*。
返される値
- -1 —
string1
[string1_offset
:string1_offset
+num_bytes
] <string2
[string2_offset
:string2_offset
+num_bytes
] の場合。 - 0 —
string1
[string1_offset
:string1_offset
+num_bytes
] =string2
[string2_offset
:string2_offset
+num_bytes
] の場合。 - 1 —
string1
[string1_offset
:string1_offset
+num_bytes
] >string2
[string2_offset
:string2_offset
+num_bytes
] の場合。
例
クエリ:
結果:
lower
文字列内のASCIIラテン文字を小文字に変換します。
構文
エイリアス: lcase
引数
input
: 文字列タイプ String。
返される値
- String データ型の値を返します。
例
クエリ:
upper
文字列内のASCIIラテン文字を大文字に変換します。
構文
エイリアス: ucase
引数
input
— 文字列タイプ String。
返される値
- String データ型の値を返します。
例
クエリ:
lowerUTF8
文字列を小文字に変換します。文字列が有効なUTF-8エンコードされたテキストであると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
言語を検出しません。たとえば、トルコ語では結果が正確ではない場合があります (i/İ vs. i/I)。UTF-8バイトシーケンスの長さが大文字と小文字で異なるコードポイント (例えば ẞ
と ß
) の場合は、このコードポイントの結果が正しくない場合があります。
構文
引数
input
— 文字列タイプ String。
返される値
- String データ型の値を返します。
例
クエリ:
結果:
upperUTF8
文字列を大文字に変換します。文字列が有効なUTF-8エンコードされたテキストであると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
言語を検出しません。たとえば、トルコ語では結果が正確ではない場合があります (i/İ vs. i/I)。UTF-8バイトシーケンスの長さが大文字と小文字で異なるコードポイント (例えば ẞ
と ß
) の場合は、このコードポイントの結果が正しくない場合があります。
構文
引数
input
— 文字列タイプ String。
返される値
- String データ型の値を返します。
例
クエリ:
結果:
isValidUTF8
バイトのセットが有効なUTF-8エンコードのテキストである場合は1を、そうでない場合は0を返します。
構文
引数
input
— 文字列タイプ String。
返される値
- バイトのセットが有効なUTF-8エンコードのテキストである場合は
1
を、そうでない場合は0
を返します。
クエリ:
結果:
toValidUTF8
無効なUTF-8文字を �
(U+FFFD) 文字で置き換えます。連続する無効な文字がある場合、それらは一つの置換文字に圧縮されます。
構文
引数
input_string
— String データ型オブジェクトとして表される任意のバイトのセット。
返される値
- 有効なUTF-8文字列。
例
repeat
文字列を指定された回数自分自身と連結します。
構文
エイリアス: REPEAT
引数
s
— 繰り返す文字列。String。n
— 文字列を繰り返す回数。UInt* または Int*。
返される値
文字列 s
が n
回繰り返された文字列。 n
<= 0 の場合、この関数は空の文字列を返します。String。
例
結果:
space
スペース (
) を指定された回数自分自身と連結します。
構文
エイリアス: SPACE
.
引数
n
— スペースを繰り返す回数。UInt* または Int*。
返される値
スペース
が n
回繰り返された文字列。 n
<= 0 の場合、この関数は空の文字列を返します。String。
例
クエリ:
結果:
reverse
文字列内のバイトのシーケンスを逆にします。
reverseUTF8
文字列内のUnicodeコードポイントのシーケンスを逆にします。文字列が有効なUTF-8エンコードされたテキストであると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
concat
与えられた引数を連結します。
構文
引数
任意のタイプの値。
String または FixedString の型でない引数は、デフォルトのシリアル化を使用して文字列に変換されます。これにより性能が低下するため、非String/FixedStringの引数を使用することは推奨されません。
返される値
引数を連結して作成された文字列。
引数のいずれかが NULL
の場合、関数は NULL
を返します。
例
クエリ:
結果:
クエリ:
結果:
||
演算子文字列連結には concat()
の簡潔な代替として ||
演算子を使用します。たとえば、'Hello, ' || 'World!'
は concat('Hello, ', 'World!')
と等価です。
concatAssumeInjective
concat と似ていますが、concat(s1, s2, ...) → sn
が単射であると仮定しています。GROUP BYの最適化に使用できます。
関数が単射であるとは、異なる引数に対して異なる結果を返す場合を指します。言い換えれば:異なる引数は決して同一の結果を生じません。
構文
引数
String または FixedString の型の値。
返される値
引数を連結して作成された文字列。
引数のいずれかの値が NULL
の場合、関数は NULL
を返します。
例
入力テーブル:
結果:
concatWithSeparator
指定された区切り文字で指定された文字列を連結します。
構文
エイリアス: concat_ws
引数
- sep — 区切り文字。定数のString または FixedString。
- exprN — 連結される式。非String または FixedString型でない引数は、デフォルトのシリアル化を使用して文字列に変換されるため、性能が低下するため、使用は推奨されません。
返される値
引数を連結して作成された文字列。
引数のいずれかの値が NULL
の場合、関数は NULL
を返します。
例
結果:
concatWithSeparatorAssumeInjective
concatWithSeparator
と似ていますが、concatWithSeparator(sep, expr1, expr2, expr3...) → result
が単射であると仮定しています。GROUP BYの最適化に使用できます。
関数が単射であるとは、異なる引数に対して異なる結果を返す場合を指します。言い換えれば:異なる引数は決して同一の結果を生じません。
substring
指定したバイトインデックス offset
から始まる文字列 s
の部分文字列を返します。バイト数のカウントは1から始まります。もし offset
が0であれば、空の文字列が返されます。もし offset
が負数であれば、部分文字列は文字列の終わりから pos
文字の位置から始まります。オプションの引数 length
は、返される部分文字列が持つ最大バイト数を指定します。
構文
エイリアス:
substr
mid
byteSlice
引数
s
— 部分文字列を計算するための文字列。String、FixedString または Enumoffset
—s
の部分文字列の開始位置。(U)Int*。length
— 部分文字列の最大長さ。(U)Int*。オプション。
返される値
インデックス offset
から開始する s
の部分文字列、バイト数が length
です。String。
例
結果:
substringUTF8
指定したバイトインデックス offset
から始まる文字列 s
の部分文字列を返します。Unicodeコードポイントに対して。バイト数のカウントは1から始まります。もし offset
が0であれば、空の文字列が返されます。もし offset
が負数であれば、部分文字列は文字列の終わりから pos
文字の位置から始まります。オプションの引数 length
は、返される部分文字列が持つ最大バイト数を指定します。
文字列が有効なUTF-8エンコードのテキストであると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
構文
引数
s
— 部分文字列を計算するための文字列。String、FixedString または Enumoffset
—s
の部分文字列の開始位置。(U)Int*。length
— 部分文字列の最大長さ。(U)Int*。オプション。
返される値
インデックス offset
から開始する s
の部分文字列、バイト数が length
です。
実装の詳細
文字列が有効なUTF-8エンコードのテキストであると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
例
substringIndex
count
回の区切り文字 delim
の出現の前の s
の部分文字列を返します。これはSparkやMySQLのように動作します。
構文
エイリアス: SUBSTRING_INDEX
引数
- s — 部分文字列を抽出するための文字列。String。
- delim — 区切る文字。String。
- count — 部分文字列を抽出する前に数える区切り文字の出現数。countが正数の場合、最後の区切り文字の左側のすべてが返されます (左から数える)。countが負数の場合、最後の区切り文字の右側のすべてが返されます (右から数える)。 UInt または Int
例
結果:
substringIndexUTF8
count
回の区切り文字 delim
の出現の前の s
の部分文字列を返します。特にUnicodeコードポイントに対して。
文字列が有効なUTF-8エンコードのテキストであると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
構文
引数
s
— 部分文字列を抽出するための文字列。String。delim
— 区切る文字。String。count
— 部分文字列を抽出する前に数える区切り文字の出現数。countが正数の場合、最後の区切り文字の左側のすべてが返されます (左から数える)。countが負数の場合、最後の区切り文字の右側のすべてが返されます (右から数える)。 UInt または Int
返される値
delim
の count
回の出現の前の s
の部分文字列。String。
実装の詳細
文字列が有効なUTF-8エンコードのテキストであると仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
例
appendTrailingCharIfAbsent
文字列 s
が非空であり、なおかつ s
の末尾が文字 c
で終わらない場合にのみ、文字 c
を s
に追加します。
構文
convertCharset
文字列 s
をエンコーディング from
からエンコーディング to
に変換した文字列を返します。
構文
base32Encode
Base32を使用して文字列をエンコードします。
構文
引数
plaintext
— String 列または定数。
返される値
- 引数のエンコードされた値を含む文字列。String または FixedString。
例
結果:
base32Decode
文字列を受け取り、Base32 エンコーディングスキームを使用してデコードします。
構文
引数
encoded
— String または FixedString。文字列が有効なBase32エンコードされた値でない場合、例外がスローされます。
返される値
- 引数のデコードされた値を含む文字列。String。
例
結果:
tryBase32Decode
base32Decode
と同様ですが、エラーの場合には空の文字列を返します。
構文
引数
encoded
— String または FixedString。文字列が有効なBase32エンコードされた値でない場合、エラー時に空の文字列を返します。
返される値
- 引数のデコードされた値を含む文字列。
例
クエリ:
base58Encode
Base58により、"Bitcoin" アルファベットを使用して文字列をエンコードします。
構文
引数
plaintext
— String 列または定数。
返される値
- 引数のエンコードされた値を含む文字列。String または FixedString。
例
結果:
base58Decode
文字列を受け取り、"Bitcoin" アルファベットを使用してBase58 エンコーディングスキームを使用してデコードします。
構文
引数
encoded
— String または FixedString。文字列が有効なBase58エンコードされた値でない場合、例外がスローされます。
返される値
- 引数のデコードされた値を含む文字列。String。
例
結果:
tryBase58Decode
base58Decode
と同様ですが、エラーの場合には空の文字列を返します。
構文
引数
encoded
— String または FixedString。文字列が有効なBase58エンコードされた値でない場合、エラー時に空の文字列を返します。
返される値
- 引数のデコードされた値を含む文字列。
例
クエリ:
base64Encode
文字列または固定文字列をbase64としてエンコードします。RFC 4648 に従って。
エイリアス: TO_BASE64
.
構文
引数
plaintext
— String 列または定数。
返される値
- 引数のエンコードされた値を含む文字列。
例
結果:
base64URLEncode
URL (String または FixedString) をbase64としてエンコードし、URLに特有の修正を加えます。RFC 4648 に従って。
構文
引数
url
— String 列または定数。
返される値
- 引数のエンコードされた値を含む文字列。
例
結果:
base64Decode
文字列を受け取り、base64からデコードします。RFC 4648 に従って。エラーの場合には例外をスローします。
エイリアス: FROM_BASE64
.
構文
引数
encoded
— String 列または定数。文字列が有効なBase64エンコードされた値でない場合、例外がスローされます。
返される値
- 引数のデコードされた値を含む文字列。
例
結果:
base64URLDecode
base64エンコードされたURLを受け取り、base64からデコードし、URLに特有の修正を加えます。RFC 4648 に従って。エラーの場合には例外をスローします。
構文
引数
encodedURL
— String 列または定数。文字列が有効なBase64エンコードされた値でない場合、例外がスローされます。
返される値
- 引数のデコードされた値を含む文字列。
例
結果:
tryBase64Decode
base64Decode
と同様ですが、エラーの場合には空の文字列を返します。
構文
引数
encoded
— String 列または定数。文字列が有効なBase64エンコードされた値でない場合、空の文字列を返します。
返される値
- 引数のデコードされた値を含む文字列。
例
クエリ:
tryBase64URLDecode
base64URLDecode
と同様ですが、エラーの場合には空の文字列を返します。
構文
引数
encodedURL
— String 列または定数。文字列が有効なBase64エンコードされた値でない場合、空の文字列を返します。
返される値
- 引数のデコードされた値を含む文字列。
例
クエリ:
endsWith
文字列 str
が suffix
で終わるかどうかを返します。
構文
endsWithUTF8
文字列 str
が suffix
で終わるかどうかを返します。endsWithUTF8
と endsWith
の違いは、endsWithUTF8
が UTF-8 文字で str
と suffix
を一致させることです。
構文
例
結果:
startsWith
文字列 str
が prefix
で始まるかどうかを返します。
構文
例
startsWithUTF8
文字列 str
が prefix
で始まるかどうかを返します。startsWithUTF8
と startsWith
の違いは、startsWithUTF8
が UTF-8 文字で str
と prefix
を一致させることです。
例
結果:
trim
指定された文字を文字列の先頭または末尾から削除します。特に指定されない場合、関数は空白 (ASCII文字32) を削除します。
構文
引数
返される値
先頭および/または末尾の指定された文字が含まれていない文字列。String。
例
結果:
trimLeft
文字列の先頭から空白 (ASCII文字32) の連続発生を削除します。
構文
エイリアス: ltrim
.
引数
input_string
— 切り取る対象の文字列。String。trim_characters
— 切り取る文字。オプション。String。指定しない場合は、' ' (単一空白) が切り取り文字として使用されます。
返される値
先頭に一般的な空白が含まれていない文字列。String。
例
結果:
trimRight
文字列の末尾から連続した空白文字 (ASCII文字32) を削除します。
構文
エイリアス: rtrim
.
引数
input_string
— トリムする文字列。 String.trim_characters
— トリムする文字。オプション。 String. 指定されない場合は、' '
(単一の空白) がトリム文字として使用されます。
戻り値
末尾の空白がない文字列。 String.
例
結果:
trimBoth
文字列の両端から連続した空白文字 (ASCII文字32) を削除します。
構文
エイリアス: trim
.
引数
input_string
— トリムする文字列。 String.trim_characters
— トリムする文字。オプション。 String. 指定されない場合は、' '
(単一の空白) がトリム文字として使用されます。
戻り値
先頭と末尾の空白がない文字列。 String.
例
結果:
CRC32
文字列のCRC32チェックサムを、CRC-32-IEEE 802.3多項式および初期値 0xffffffff
(zlib実装) を使用して返します。
戻り値の型はUInt32です。
CRC32IEEE
文字列のCRC32チェックサムを、CRC-32-IEEE 802.3多項式を使用して返します。
戻り値の型はUInt32です。
CRC64
文字列のCRC64チェックサムを、CRC-64-ECMA多項式を使用して返します。
戻り値の型はUInt64です。
normalizeUTF8NFC
文字列をNFC正規化形式に変換します。文字列が有効なUTF8エンコードされたテキストであると仮定します。
構文
引数
words
— UTF8エンコードされた入力文字列。 String.
戻り値
- NFC正規化形式に変換された文字列。 String.
例
結果:
normalizeUTF8NFD
文字列をNFD正規化形式に変換します。文字列が有効なUTF8エンコードされたテキストであると仮定します。
構文
引数
words
— UTF8エンコードされた入力文字列。 String.
戻り値
- NFD正規化形式に変換された文字列。 String.
例
結果:
normalizeUTF8NFKC
文字列をNFKC正規化形式に変換します。文字列が有効なUTF8エンコードされたテキストであると仮定します。
構文
引数
words
— UTF8エンコードされた入力文字列。 String.
戻り値
- NFKC正規化形式に変換された文字列。 String.
例
結果:
normalizeUTF8NFKD
文字列をNFKD正規化形式に変換します。文字列が有効なUTF8エンコードされたテキストであると仮定します。
構文
引数
words
— UTF8エンコードされた入力文字列。 String.
戻り値
- NFKD正規化形式に変換された文字列。 String.
例
結果:
encodeXMLComponent
特別な意味を持つXML文字をエスケープし、XMLテキストノードや属性に埋め込むことができるようにします。
次の文字が置換されます: <
, &
, >
, "
, '
.
また、XMLおよびHTMLの文字エンティティ参照のリストも参照してください。
構文
引数
x
— 入力文字列。 String.
戻り値
- エスケープされた文字列。 String.
例
結果:
decodeXMLComponent
XMLで特別な意味を持つサブ文字列をデコードします。これらのサブ文字列は、"
&
'
>
<
です。
この関数はまた、数値文字参照をUnicode文字に置き換えます。十進法 (✓
) と16進法 (✓
) の両方の形式がサポートされています。
構文
引数
x
— 入力文字列。 String.
戻り値
- デコードされた文字列。 String.
例
結果:
decodeHTMLComponent
HTMLで特別な意味を持つサブ文字列をデコードします。例えば: ℏ
>
♦
♥
<
など。
この関数はまた、数値文字参照をUnicode文字に置き換えます。十進法 (✓
) と16進法 (✓
) の両方の形式がサポートされています。
構文
引数
x
— 入力文字列。 String.
戻り値
- デコードされた文字列。 String.
例
結果:
extractTextFromHTML
この関数はHTMLまたはXHTMLからプレーンテキストを抽出します。
HTML、XML、XHTMLの仕様に100%準拠しているわけではありませんが、実装は合理的に正確で高速です。ルールは次のとおりです。
- コメントはスキップされます。例:
<!-- test -->
。コメントは-->
で終了する必要があります。ネストされたコメントは許可されません。 注意:<!-->
や<!--->
のような構文はHTMLでは有効なコメントではありませんが、他のルールによりスキップされます。 - CDATAはそのまま貼り付けられます。注意: CDATAはXML/XHTML特有であり、「最善の努力」ベースで処理されます。
script
およびstyle
要素は、その内容とともに削除されます。注意: 閉じタグは内容内に出現しないと仮定されます。たとえば、JSの文字列リテラルは"<\/script>"
のようにエスケープする必要があります。 注意:script
またはstyle
内ではコメントやCDATAが可能ですが、その場合、CDATA内で閉じタグは検索されません。例:<script><![CDATA[</script>]]></script>
。 しかし、コメント内では検索されます。時には複雑になります:<script>var x = "<!--"; </script> var y = "-->"; alert(x + y);</script>
。 注意:script
およびstyle
はXML名前空間の名前である可能性があるため、その場合、通常のscript
またはstyle
要素として扱われません。例:<script:a>Hello</script:a>
。 注意: 閉じタグ名の後に空白が入ることはあります:</script >
ですが、その前には入らないことが期待されます:< / script>
。- 他のタグやタグのような要素は、内部コンテンツなしでスキップされます。例:
<a>.</a>
注意: このHTMLは違法であることが期待されています:<a test=">"></a>
注意:<>
や<!>
のようなタグもスキップされます。 注意: 終了しないタグは入力の終わりまでスキップされます:<hello
。 - HTMLおよびXMLエンティティはデコードされません。別の関数で処理する必要があります。
- テキスト内の空白は特定のルールに従って折りたたまれるか挿入されます。
- 開始と終了の空白が削除されます。
- 連続する空白が折りたたまれます。
- ただし、テキストが他の要素によって区切られ、空白がない場合は挿入されます。
- これは不自然な例を引き起こす可能性があります:
Hello<b>world</b>
,Hello<!-- -->world
- HTMLには空白がありませんが、関数はそれを挿入します。また考えてください:Hello<p>world</p>
,Hello<br>world
。この動作はデータ分析にとって合理的です。たとえば、HTMLを単語の袋に変換するためです。
- 正確な空白処理には、
<pre></pre>
とCSSのdisplay
およびwhite-space
プロパティのサポートが必要です。
構文
引数
x
— 入力テキスト。 String.
戻り値
- 抽出されたテキスト。 String.
例
最初の例にはいくつかのタグとコメントが含まれており、空白処理も示しています。
2番目の例は CDATA
と script
タグ処理を示しています。
3番目の例では、url関数から受け取った完全なHTMLレスポンスからテキストが抽出されます。
結果:
ascii
文字列 s
の最初の文字のASCIIコードポイント (Int32として) を返します。
s
が空である場合、結果は0です。最初の文字がASCII文字でない場合や、Latin-1補完の範囲内にない場合、結果は未定義です。
構文
soundex
文字列のSoundexコードを返します。
構文
引数
val
— 入力値。 String
戻り値
- 入力値のSoundexコード。 String
例
結果:
punycodeEncode
文字列のPunycode表現を返します。 文字列はUTF8エンコードされている必要があります。そうでない場合、動作は未定義です。
構文
引数
val
— 入力値。 String
戻り値
- 入力値のPunycode表現。 String
例
結果:
punycodeDecode
Punycodeエンコードされた文字列のUTF8エンコードされたプレーンテキストを返します。 無効なPunycodeエンコードされた文字列が与えられた場合、例外がスローされます。
構文
引数
val
— Punycodeエンコードされた文字列。 String
戻り値
- 入力値のプレーンテキスト。 String
例
結果:
tryPunycodeDecode
punycodeDecode
と同様ですが、有効なPunycodeエンコードされた文字列が与えられなかった場合は空の文字列を返します。
idnaEncode
国際化ドメイン名アプリケーションにおけるドメイン名 (IDNA) メカニズムに従って、ドメイン名のASCII表現 (ToASCIIアルゴリズム) を返します。 入力文字列はUTFエンコードされ、ASCII文字列に変換可能でなければなりません。そうでない場合、例外がスローされます。 注意: パーセントデコーディングやタブ、スペース、制御文字のトリミングは行われません。
構文
引数
val
— 入力値。 String
戻り値
- 入力値のIDNAメカニズムに従ったASCII表現。 String
例
結果:
tryIdnaEncode
idnaEncode
と同様ですが、例外をスローする代わりにエラー発生時に空の文字列を返します。
idnaDecode
国際化ドメイン名アプリケーションにおけるドメイン名 (IDNA) メカニズムに従って、ドメイン名のUnicode (UTF-8) 表現 (ToUnicodeアルゴリズム) を返します。
エラーが発生した場合 (例: 入力が無効な場合)、入力文字列が返されます。
idnaEncode()
と idnaDecode()
を繰り返し適用することは、ケース正規化のために必ずしも元の文字列を返すわけではないことに注意してください。
構文
引数
val
— 入力値。 String
戻り値
- 入力値のIDNAメカニズムに従ったUnicode (UTF-8) 表現。 String
例
結果:
byteHammingDistance
2つのバイト文字列間のハミング距離を計算します。
構文
例
結果:
エイリアス: mismatches
stringJaccardIndex
2つのバイト文字列間のJaccard類似度指数を計算します。
構文
例
結果:
stringJaccardIndexUTF8
[80]中の>stringJaccardIndex](#stringjaccardindex)と同様ですが、UTF8エンコードされた文字列に対して動作します。
editDistance
2つのバイト文字列間の編集距離を計算します。
構文
例
結果:
エイリアス: levenshteinDistance
editDistanceUTF8
2つのUTF8文字列間の編集距離を計算します。
構文
例
結果:
エイリアス: levenshteinDistanceUTF8
damerauLevenshteinDistance
2つのバイト文字列間のDamerau-Levenshtein距離を計算します。
構文
例
結果:
jaroSimilarity
2つのバイト文字列間のJaro類似度を計算します。
構文
例
結果:
jaroWinklerSimilarity
2つのバイト文字列間のJaro-Winkler類似度を計算します。
構文
例
結果:
initcap
各単語の最初の文字を大文字にし、そのほかを小文字にします。単語は、非英数字文字で区切られた英数字の文字列です。
initCap
は各単語の最初の文字のみを大文字に変換するため、アポストロフィや大文字を含む単語では予期しない動作が観察されることがあります。例えば:
は次のように返されます。
これは既知の動作であり、修正の計画は現在ありません。
構文
引数
val
— 入力値。 String.
戻り値
- 単語の最初の文字が大文字に変換された
val
。 String.
例
クエリ:
結果:
initcapUTF8
initcapと同様に、initcapUTF8
は各単語の最初の文字を大文字にし、そのほかを小文字にします。有効なUTF-8エンコードされたテキストが含まれていると仮定します。
この仮定が破られた場合、例外はスローされず、結果は未定義になります。
この関数は言語を検出しません。例えば、トルコ語の場合、結果が正確でない場合があります (i/İ vs. i/I)。 UTF-8バイトシーケンスの長さが大文字と小文字で異なる場合、このコードポイントの結果が正しくない場合があります。
構文
引数
val
— 入力値。 String.
戻り値
- 単語の最初の文字が大文字に変換された
val
。 String.
例
クエリ:
結果:
firstLine
複数行の文字列から最初の行を返します。
構文
引数
val
— 入力値。 String
戻り値
- 入力値の最初の行、または行区切りがない場合は全体の値。 String
例
結果:
stringCompare
2つの文字列を辞書式に比較します。
構文
引数
string1
— 比較する最初の文字列。 Stringstring2
- 比較する2番目の文字列。 Stringstring1_offset
— 比較が始まるstring1
内の位置 (0ベース)。オプション、正の数。string2_offset
— 比較が始まるstring2
内の位置 (0ベース)。オプション、正の数。num_bytes
— 両方の文字列で比較する最大バイト数。string_offset
+num_bytes
が入力文字列の終わりを超える場合、num_bytes
はそれに応じて減少します。
戻り値
- -1 —
string1
[string1_offset
:string1_offset
+num_bytes
] <string2
[string2_offset
:string2_offset
+num_bytes
] かつstring1_offset
< len(string1
) かつstring2_offset
< len(string2
) の場合。string1_offset
>= len(string1
) かつstring2_offset
< len(string2
) の場合。 - 0 —
string1
[string1_offset
:string1_offset
+num_bytes
] =string2
[string2_offset
:string2_offset
+num_bytes
] かつstring1_offset
< len(string1
) かつstring2_offset
< len(string2
) の場合。string1_offset
>= len(string1
) かつstring2_offset
>= len(string2
) の場合。 - 1 —
string1
[string1_offset
:string1_offset
+num_bytes
] >string2
[string2_offset
:string2_offset
+num_bytes
] かつstring1_offset
< len(string1
) かつstring2_offset
< len(string2
) の場合。string1_offset
< len(string1
) かつstring2_offset
>= len(string2
) の場合。
例
結果:
結果:
sparseGrams
与えられた文字列のすべての部分文字列の中で、長さが少なくとも n
であり、
部分文字列の境界にある(n-1)-グラムのハッシュが、部分文字列内部のいかなる(n-1)-グラムのハッシュよりも厳密に大きいものを見つけます。
ハッシュ関数としてcrc32を使用します。
構文
引数
s
— 入力文字列。 Stringmin_ngram_length
— 抽出されるnグラムの最小長。デフォルトおよび最小値は3です。max_ngram_length
— 抽出されるnグラムの最大長。デフォルト値は100です。min_ngram_length
よりも小さくない必要があります。
戻り値
例
結果:
sparseGramsUTF8
与えられた文字列のすべての部分文字列の中で、長さが少なくとも n
であり、
部分文字列の境界にある(n-1)-グラムのハッシュが、部分文字列内部のいかなる(n-1)-グラムのハッシュよりも厳密に大きいものを見つけます。
ハッシュ関数としてcrc32を使用します。
UTF-8文字列を期待し、無効なUTF-8シーケンスの場合は例外をスローします。
構文
引数
s
— 入力文字列。 Stringmin_ngram_length
— 抽出されるnグラムの最小長。デフォルトおよび最小値は3です。max_ngram_length
— 抽出されるnグラムの最大長。デフォルト値は100です。min_ngram_length
よりも小さくない必要があります。
戻り値
例
結果:
sparseGramsHashes
与えられた文字列のすべての部分文字列の中で、長さが少なくとも n
であり、
部分文字列の境界にある(n-1)-グラムのハッシュが、部分文字列内部のいかなる(n-1)-グラムのハッシュよりも厳密に大きいものを見つけます。
ハッシュ関数としてcrc32を使用します。
構文
引数
s
— 入力文字列。 Stringmin_ngram_length
— 抽出されるnグラムの最小長。デフォルトおよび最小値は3です。max_ngram_length
— 抽出されるnグラムの最大長。デフォルト値は100です。min_ngram_length
よりも小さくない必要があります。
戻り値
例
結果:
sparseGramsHashesUTF8
与えられた文字列のすべての部分文字列の中で、長さが少なくとも n
であり、
部分文字列の境界にある(n-1)-グラムのハッシュが、部分文字列内部のいかなる(n-1)-グラムのハッシュよりも厳密に大きいものを見つけます。
ハッシュ関数としてcrc32を使用します。
UTF-8文字列を期待し、無効なUTF-8シーケンスの場合は例外をスローします。
構文
引数
s
— 入力文字列。 Stringmin_ngram_length
— 抽出されるnグラムの最小長。デフォルトおよび最小値は3です。max_ngram_length
— 抽出されるnグラムの最大長。デフォルト値は100です。min_ngram_length
よりも小さくない必要があります。
戻り値
例
結果:
stringBytesUniq
文字列内の異なるバイトの数をカウントします。
構文
引数
s
— 分析する文字列。 String.
戻り値
- 文字列内の異なるバイトの数。 UInt16.
例
結果:
stringBytesEntropy
文字列内のバイト分布のシャノンエントロピーを計算します。
構文
引数
s
— 分析する文字列。 String.
戻り値
- 文字列内のバイト分布のシャノンエントロピー。 Float64.
例
結果: