文字列を扱うための関数
文字列内の検索および置換に関する関数は別途説明されています。
empty
入力された文字列が空であるかをチェックします。文字列は、少なくとも1バイトを含む場合、空でないとみなされます。このバイトがスペースやヌルバイトであっても同様です。
構文
引数
x
— 入力値。 文字列。
戻り値
- 空の文字列の場合は
1
、空でない文字列の場合は0
を返します。 UInt8。
例
結果:
notEmpty
入力された文字列が空でないかをチェックします。文字列は、少なくとも1バイトを含む場合、空でないと見なされます。このバイトがスペースやヌルバイトであっても同様です。
構文
引数
x
— 入力値。 文字列。
戻り値
- 空でない文字列の場合は
1
、空の文字列の場合は0
を返します。UInt8。
例
結果:
length
文字列の長さをバイト数で返します。文字数やUnicodeコードポイントではありません。関数は配列にも対応しています。
エイリアス: OCTET_LENGTH
構文
引数
戻り値
- 文字列または配列
s
のバイト数の長さ。 UInt64。
例
クエリ:
結果:
クエリ:
結果:
lengthUTF8
文字列の長さをUnicodeコードポイントで返します。バイト数や文字数ではありません。文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
エイリアス:
CHAR_LENGTH
CHARACTER_LENGTH
構文
引数
s
— 有効なUTF-8エンコードテキストを含む文字列。 文字列。
戻り値
- 文字列
s
のUnicodeコードポイントの長さ。 UInt64。
例
クエリ:
結果:
left
指定されたオフセットから左側の文字列 s
の部分文字列を返します。
構文
引数
s
— 部分文字列を取得する文字列。文字列またはFixedString。offset
— オフセットのバイト数。(U)Int*。
戻り値
- 正の
offset
の場合: 文字列の左側からoffset
バイトの部分文字列。 - 負の
offset
の場合: 文字列の左側からlength(s) - |offset|
バイトの部分文字列。 length
が 0 の場合は空の文字列。
例
クエリ:
結果:
クエリ:
結果:
leftUTF8
UTF-8エンコードされた文字列 s
の指定されたオフセットから左側の部分文字列を返します。
構文
引数
s
— 部分文字列を取得するUTF-8エンコードされた文字列。文字列またはFixedString。offset
— オフセットのバイト数。(U)Int*。
戻り値
- 正の
offset
の場合: 文字列の左側からoffset
バイトの部分文字列。 - 負の
offset
の場合: 文字列の左側からlength(s) - |offset|
バイトの部分文字列。 length
が 0 の場合は空の文字列。
例
クエリ:
結果:
クエリ:
結果:
leftPad
文字列を指定された length
までスペースまたは指定された文字列で左側から埋めます(必要に応じて複数回)。
構文
エイリアス: LPAD
引数
string
— 埋める対象の入力文字列。文字列。length
— 結果の文字列の長さ。UIntまたはInt。値が入力文字列の長さより小さい場合、入力文字列はlength
文字に短縮されます。pad_string
— 入力文字列を埋めるための文字列。文字列。省略可能。指定しない場合、入力文字列はスペースで埋められます。
戻り値
- 指定された長さの左に埋められた文字列。文字列。
例
結果:
leftPadUTF8
文字列を指定された length
までスペースまたは指定された文字列で左側から埋めます。 leftPad がバイト数で文字列長を測定するのに対し、文字列長はコードポイントで測定されます。
構文
引数
string
— 埋める対象の入力文字列。文字列。length
— 結果の文字列の長さ。UIntまたはInt。値が入力文字列の長さより小さい場合、入力文字列はlength
文字に短縮されます。pad_string
— 入力文字列を埋めるための文字列。文字列。省略可能。指定しない場合、入力文字列はスペースで埋められます。
戻り値
- 指定された長さの左に埋められた文字列。文字列。
例
結果:
right
文字列 s
の指定されたオフセットから右側の部分文字列を返します。
構文
引数
s
— 部分文字列を取得する文字列。文字列またはFixedString。offset
— オフセットのバイト数。(U)Int*。
戻り値
- 正の
offset
の場合: 文字列の右側からoffset
バイトの部分文字列。 - 負の
offset
の場合: 文字列の右側からlength(s) - |offset|
バイトの部分文字列。 length
が 0 の場合は空の文字列。
例
クエリ:
結果:
クエリ:
結果:
rightUTF8
UTF-8エンコードされた文字列 s
の指定されたオフセットから右側の部分文字列を返します。
構文
引数
s
— 部分文字列を取得するUTF-8エンコードされた文字列。文字列またはFixedString。offset
— オフセットのバイト数。(U)Int*。
戻り値
- 正の
offset
の場合: 文字列の右側からoffset
バイトの部分文字列。 - 負の
offset
の場合: 文字列の右側からlength(s) - |offset|
バイトの部分文字列。 length
が 0 の場合は空の文字列。
例
クエリ:
結果:
クエリ:
結果:
rightPad
文字列を指定された length
まで右側からスペースまたは指定された文字列で埋めます(必要に応じて複数回)。
構文
エイリアス: RPAD
引数
string
— 埋める対象の入力文字列。文字列。length
— 結果の文字列の長さ。UIntまたはInt。値が入力文字列の長さより小さい場合、入力文字列はlength
文字に短縮されます。pad_string
— 入力文字列を埋めるための文字列。文字列。省略可能。指定しない場合、入力文字列はスペースで埋められます。
戻り値
- 指定された長さの右に埋められた文字列。文字列。
例
結果:
rightPadUTF8
文字列を指定された length
まで右側からスペースまたは指定された文字列で埋めます。rightPad がバイト数で文字列長を測定するのに対し、文字列長はコードポイントで測定されます。
構文
引数
string
— 埋める対象の入力文字列。文字列。length
— 結果の文字列の長さ。UIntまたはInt。値が入力文字列の長さより小さい場合、入力文字列はlength
文字に短縮されます。pad_string
— 入力文字列を埋めるための文字列。文字列。省略可能。指定しない場合、入力文字列はスペースで埋められます。
戻り値
- 指定された長さの右に埋められた文字列。文字列。
例
結果:
compareSubstrings
2つの文字列を辞書式に比較します。
構文
引数
string1
— 比較する最初の文字列。文字列string2
- 比較する2番目の文字列。文字列string1_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
: 文字列タイプ 文字列。
戻り値
- 文字列データ型の値。
例
クエリ:
結果:
upper
文字列内のASCIIラテン記号を大文字に変換します。
構文
エイリアス: ucase
引数
input
— 文字列タイプ 文字列。
戻り値
- 文字列データ型の値。
例
クエリ:
結果:
lowerUTF8
文字列を小文字に変換します。文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
言語を検出しません。たとえば、トルコ語に対して結果が正確でない可能性があります(i/İ vs. i/I)。UTF-8バイトシーケンスの大文字と小文字のコードポイントの長さが異なる場合(たとえば ẞ
と ß
)、そのコードポイントの結果が正確でない可能性があります。
構文
引数
input
— 文字列タイプ 文字列。
戻り値
- 文字列データ型の値。
例
クエリ:
結果:
upperUTF8
文字列を大文字に変換します。文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
言語を検出しません。たとえば、トルコ語に対して結果が正確でない可能性があります(i/İ vs. i/I)。UTF-8バイトシーケンスの大文字と小文字のコードポイントの長さが異なる場合(たとえば ẞ
と ß
)、そのコードポイントの結果が正確でない可能性があります。
構文
引数
input
— 文字列タイプ 文字列。
戻り値
- 文字列データ型の値。
例
クエリ:
結果:
isValidUTF8
バイトのセットが有効なUTF-8エンコードテキストである場合は1を返し、そうでない場合は0を返します。
構文
引数
input
— 文字列タイプ 文字列。
戻り値
- バイトのセットが有効なUTF-8エンコードテキストである場合は
1
、そうでない場合は0
を返します。
クエリ:
結果:
toValidUTF8
無効なUTF-8文字を �
(U+FFFD) 文字に置き換えます。連続して無効な文字は1つの置換文字に圧縮されます。
構文
引数
input_string
— 文字列データ型として表された任意のバイトセット。
戻り値
- 有効なUTF-8文字列。
例
結果:
repeat
指定された回数だけ文字列を自身と連結します。
構文
エイリアス: REPEAT
引数
s
— 繰り返す文字列。文字列。n
— 文字列を繰り返す回数。UInt* または Int*。
戻り値
文字列 s
を n
回繰り返した文字列。 n
<= 0 の場合、関数は空の文字列を返します。文字列。
例
結果:
space
空白(
)を指定された回数だけ繰り返します。
構文
エイリアス: SPACE
.
引数
n
— 空白を繰り返す回数。UInt* または Int*。
戻り値
空白を n
回繰り返した文字列。 n
<= 0 の場合、関数は空の文字列を返します。文字列。
例
クエリ:
結果:
reverse
文字列内のバイトの順序を反転させます。
reverseUTF8
文字列内のUnicodeコードポイントの順序を反転させます。文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
concat
与えられた引数を連結します。
構文
引数
任意の型の値。
文字列またはFixedStringでない引数は、デフォルトのシリアル化を使用して文字列に変換されます。これによりパフォーマンスが低下するため、非String/FixedString引数の使用は推奨されません。
戻り値
引数を連結して作成された文字列。
引数のいずれかが NULL
の場合、関数は NULL
を返します。
例
クエリ:
結果:
クエリ:
結果:
||
演算子文字列の連結には concat()
の簡潔な代替として ||
演算子を使用できます。たとえば、 'Hello, ' || 'World!'
は concat('Hello, ', 'World!')
と同じです。
concatAssumeInjective
concat と同様ですが、concat(s1, s2, ...) → sn
が単射であると仮定します。GROUP BYの最適化に使用できます。
関数が単射であるとは、異なる引数に対して異なる結果を返す場合を指します。言い換えれば、異なる引数は決して同じ結果を生成しません。
構文
引数
文字列またはFixedString型の値。
戻り値
引数を連結して作成された文字列。
引数のいずれかの値が NULL
の場合、関数は NULL
を返します。
例
入力テーブル:
結果:
concatWithSeparator
指定された区切り文字で与えられた文字列を連結します。
構文
エイリアス: concat_ws
引数
- sep — 区切り文字。文字列またはFixedString。
- exprN — 連結する式。 文字列またはFixedString型でない引数は、デフォルトのシリアル化を使用して文字列に変換されます。これによりパフォーマンスが低下するため、非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
— 部分文字列を取得する文字列。文字列、FixedStringまたはEnumoffset
—s
で部分文字列の開始位置。(U)Int*。length
— 部分文字列の最大長。(U)Int*。オプション。
戻り値
offset
で始まる s
の部分文字列の長さだけのバイト。文字列。
例
結果:
substringUTF8
指定されたバイトインデックス offset
から始まる文字列 s
の部分文字列を返します。バイトのカウントは1から始まります。 offset
が0の場合、空の文字列が返されます。 offset
が負の場合、部分文字列は文字列の先頭ではなく末尾から pos
文字で始まります。オプションの引数 length
は、返される部分文字列の最大バイト数を指定します。
文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
構文
引数
s
— 部分文字列を取得する文字列。文字列、FixedStringまたはEnumoffset
—s
で部分文字列の開始位置。(U)Int*。length
— 部分文字列の最大長。(U)Int*。オプション。
戻り値
offset
で始まる s
の部分文字列の長さだけのバイト。
実装の詳細
文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
例
結果:
substringIndex
delim
の count
回出現する前の s
の部分文字列を返します。SparkやMySQLと同様です。
構文
エイリアス: SUBSTRING_INDEX
引数
- s — 部分文字列を抽出する文字列。文字列。
- delim — 分割する文字。文字列。
- count — 部分文字列を抽出する前に数える区切り文字の出現回数。 count が正の場合、最後の区切り文字の左側のすべてが返されます(左から数えて)。 count が負の場合、最後の区切り文字の右側のすべてが返されます(右から数えて)。 UIntまたはInt
例
結果:
substringIndexUTF8
delim
の count
回出現する前の s
の部分文字列を返します。具体的にはUnicodeコードポイントのためです。
文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
構文
引数
s
— 部分文字列を抽出する文字列。文字列。delim
— 分割する文字。文字列。count
— 部分文字列を抽出する前に数える区切り文字の出現回数。 count が正の場合、最後の区切り文字の左側のすべてが返されます(左から数えて)。 count が負の場合、最後の区切り文字の右側のすべてが返されます(右から数えて)。 UIntまたはInt
戻り値
delim
の count
回出現する前の s
の部分文字列。文字列。
実装の詳細
文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。
例
結果:
appendTrailingCharIfAbsent
文字列 s
が空でなく、文字 c
で終わっていない場合、文字 c
を文字列 s
に追加します。
構文
convertCharset
エンコーディング from
からエンコーディング to
に変換された文字列 s
を返します。
構文
base58Encode
「Bitcoin」アルファベットでBase58を使用して文字列をエンコードします。
構文
引数
plaintext
— 文字列の列または定数。
戻り値
- 引数のエンコード値を含む文字列。文字列またはFixedString。
例
結果:
base58Decode
文字列を受け取り、「Bitcoin」アルファベットを使用したBase58エンコーディング方式でデコードします。
構文
引数
encoded
— 文字列またはFixedString。文字列が有効なBase58エンコード値でない場合、例外がスローされます。
戻り値
- 引数のデコード値を含む文字列。文字列。
例
結果:
tryBase58Decode
base58Decode
と同じですが、エラーが発生した場合には空の文字列を返します。
構文
引数
encoded
: 文字列またはFixedString。文字列が有効なBase58エンコード値でない場合、エラー時に空の文字列を返します。
戻り値
- 引数のデコード値を含む文字列。
例
クエリ:
結果:
base64Encode
文字列またはFixedStringを、RFC 4648 に従ってbase64としてエンコードします。
エイリアス: TO_BASE64
.
構文
引数
plaintext
— 文字列の列または定数。
戻り値
- 引数のエンコード値を含む文字列。
例
結果:
base64URLEncode
URL(StringまたはFixedString)を、RFC 4648に従って、URL固有の修正を加えたbase64にエンコードします。
構文
引数
url
— String カラムまたは定数。
返される値
- 引数のエンコードされた値を含む文字列。
例
結果:
base64Decode
Stringを受け取り、RFC 4648に従ってbase64からデコードします。エラーが発生した場合は例外をスローします。
エイリアス: FROM_BASE64
.
構文
引数
encoded
— String カラムまたは定数。文字列が有効なBase64エンコードの値でない場合、例外がスローされます。
返される値
- 引数のデコードされた値を含む文字列。
例
結果:
base64URLDecode
base64エンコードされたURLを受け取り、RFC 4648に従って、URL固有の修正を加えたbase64からデコードします。エラーが発生した場合は例外をスローします。
構文
引数
encodedURL
— String カラムまたは定数。文字列が有効なBase64エンコードの値でURL固有の修正がされていない場合、例外がスローされます。
返される値
- 引数のデコードされた値を含む文字列。
例
結果:
tryBase64Decode
base64Decode
と同様ですが、エラーが発生した場合は空の文字列を返します。
構文
引数
encoded
— String カラムまたは定数。文字列が有効なBase64エンコードの値でない場合は空の文字列を返します。
返される値
- 引数のデコードされた値を含む文字列。
例
クエリ:
tryBase64URLDecode
base64URLDecode
と同様ですが、エラーが発生した場合は空の文字列を返します。
構文
引数
encodedURL
— String カラムまたは定数。文字列が有効なBase64エンコードの値でURL固有の修正がされていない場合は空の文字列を返します。
返される値
- 引数のデコードされた値を含む文字列。
例
クエリ:
endsWith
文字列 str
が suffix
で終わるかどうかを返します。
構文
endsWithUTF8
文字列 str
が suffix
で終わるかどうかを返します。endsWithUTF8
と endsWith
の違いは、endsWithUTF8
が str
と suffix
をUTF-8文字で一致させることです。
構文
例
結果:
startsWith
文字列 str
が prefix
で始まるかどうかを返します。
構文
例
startsWithUTF8
文字列 str
が prefix
で始まるかどうかを返します。startsWithUTF8
と startsWith
の違いは、startsWithUTF8
が str
と suffix
をUTF-8文字で一致させることです。
例
結果:
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文字に置き換えます。両方の10進法(✓
)および16進法(✓
)形式がサポートされています。
構文
引数
x
— 入力文字列。 String。
返される値
- エスケープ解除された文字列。 String。
例
結果:
decodeHTMLComponent
HTMLで特別な意味を持つ部分文字列のエスケープを解除します。たとえば: ℏ
>
♦
♥
<
など。
この関数は、数値文字参照をUnicode文字に置き換えます。両方の10進法(✓
)および16進法(✓
)形式がサポートされています。
構文
引数
x
— 入力文字列。 String。
返される値
- エスケープ解除された文字列。 String。
例
結果:
extractTextFromHTML
この関数は、HTMLまたはXHTMLからプレーンテキストを抽出します。
HTML、XML、またはXHTMLの仕様には100%準拠していませんが、実装は合理的に正確で高速です。ルールは次のとおりです。
- コメントはスキップされます。例:
<!-- test -->
。コメントは-->
で終わらなければなりません。入れ子コメントは許可されません。 注意:<!-->
や<!--->
のような構造は、HTMLでは有効ではありませんが、他のルールによってスキップされます。 - CDATAはそのまま貼り付けられます。注意: CDATAはXML/XHTML特有であり、"最善を尽くす"という原則で処理されます。
script
およびstyle
要素は、その中のコンテンツごと削除されます。注意: 閉じるタグはコンテンツ内に現れないと仮定されています。たとえば、JS文字列リテラルは"<\/script>"
のようにエスケープする必要があります。 注意: コメントやCDATAはscrip
またはstyle
の内部に存在する可能性があります - その場合、閉じるタグは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文字でない場合や、UTF-16の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
ドメイン名のASCII表現(ToASCIIアルゴリズム)を返します。これは、アプリケーションにおける国際化ドメイン名(IDNA)メカニズムに従って行われます。入力文字列はUTF-エンコードされており、ASCII文字列に変換可能でなければなりません。そうでない場合は例外がスローされます。 注意: パーセントデコードやタブ、空白、制御文字のトリミングは行われません。
構文
引数
val
— 入力値。 String
返される値
- 入力値のIDNAメカニズムに従ったASCII表現。 String
例
結果:
tryIdnaEncode
idnaEncode
と同様ですが、エラーが発生した場合は例外をスローするのではなく、空の文字列を返します。
idnaDecode
ドメイン名のUnicode(UTF-8)表現(ToUnicodeアルゴリズム)を返します。これは、アプリケーションにおける国際化ドメイン名(IDNA)メカニズムに従います。
エラーが発生した場合(たとえば、入力が無効な場合)、入力文字列が返されます。
idnaEncode()
およびidnaDecode()
の繰り返し適用は、ケースの正規化のため、必ずしも元の文字列を返さないことに注意してください。
構文
引数
val
— 入力値。 String
返される値
- 入力値のIDNAメカニズムに従ったUnicode(UTF-8)表現。 String
例
結果:
byteHammingDistance
2つのバイト文字列間のハミング距離を計算します。
構文
例
結果:
エイリアス: mismatches
stringJaccardIndex
2つのバイト文字列間のJaccard類似度指数を計算します。
構文
例
結果:
stringJaccardIndexUTF8
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
stringJaccardIndexのように、initcapUTF8
は各単語の最初の文字を大文字にし、残りを小文字にします。有効なUTF-8エンコードされたテキストが含まれていると仮定します。
この仮定が守られない場合、例外はスローされず、結果は未定義になります。
この関数は言語を検出しません。たとえば、トルコ語の場合、結果が完全に正確ではない場合があります(i/İ対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
)。
例
結果:
結果: