メインコンテンツまでスキップ
メインコンテンツまでスキップ

文字列を扱うための関数

文字列内の検索および置換に関する関数は別途説明されています。

empty

入力された文字列が空であるかをチェックします。文字列は、少なくとも1バイトを含む場合、空でないとみなされます。このバイトがスペースやヌルバイトであっても同様です。

この関数は配列UUIDにも使用できます。

構文

引数

戻り値

  • 空の文字列の場合は 1、空でない文字列の場合は 0 を返します。 UInt8

結果:

notEmpty

入力された文字列が空でないかをチェックします。文字列は、少なくとも1バイトを含む場合、空でないと見なされます。このバイトがスペースやヌルバイトであっても同様です。

この関数は配列UUIDにも使用できます。

構文

引数

戻り値

  • 空でない文字列の場合は 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 — 入力文字列を埋めるための文字列。文字列。省略可能。指定しない場合、入力文字列はスペースで埋められます。

戻り値

  • 指定された長さの左に埋められた文字列。文字列

結果:

文字列 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_offsetstring1 で比較が始まる位置(ゼロベース)。UInt*
  • string2_offsetstring2 で比較が始まる位置(ゼロベース)。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

引数

戻り値

クエリ:

結果:

upper

文字列内のASCIIラテン記号を大文字に変換します。

構文

エイリアス: ucase

引数

戻り値

クエリ:

結果:

lowerUTF8

文字列を小文字に変換します。文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。

注記

言語を検出しません。たとえば、トルコ語に対して結果が正確でない可能性があります(i/İ vs. i/I)。UTF-8バイトシーケンスの大文字と小文字のコードポイントの長さが異なる場合(たとえば ß)、そのコードポイントの結果が正確でない可能性があります。

構文

引数

戻り値

クエリ:

結果:

upperUTF8

文字列を大文字に変換します。文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。

注記

言語を検出しません。たとえば、トルコ語に対して結果が正確でない可能性があります(i/İ vs. i/I)。UTF-8バイトシーケンスの大文字と小文字のコードポイントの長さが異なる場合(たとえば ß)、そのコードポイントの結果が正確でない可能性があります。

構文

引数

戻り値

クエリ:

結果:

isValidUTF8

バイトのセットが有効なUTF-8エンコードテキストである場合は1を返し、そうでない場合は0を返します。

構文

引数

戻り値

  • バイトのセットが有効なUTF-8エンコードテキストである場合は 1、そうでない場合は 0 を返します。

クエリ:

結果:

toValidUTF8

無効なUTF-8文字を (U+FFFD) 文字に置き換えます。連続して無効な文字は1つの置換文字に圧縮されます。

構文

引数

  • input_string文字列データ型として表された任意のバイトセット。

戻り値

  • 有効なUTF-8文字列。

結果:

repeat

指定された回数だけ文字列を自身と連結します。

構文

エイリアス: REPEAT

引数

戻り値

文字列 sn 回繰り返した文字列。 n <= 0 の場合、関数は空の文字列を返します。文字列

結果:

space

空白( )を指定された回数だけ繰り返します。

構文

エイリアス: SPACE.

引数

戻り値

空白を 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またはEnum
  • offsets で部分文字列の開始位置。(U)Int*
  • length — 部分文字列の最大長。(U)Int*。オプション。

戻り値

offset で始まる s の部分文字列の長さだけのバイト。文字列

結果:

substringUTF8

指定されたバイトインデックス offset から始まる文字列 s の部分文字列を返します。バイトのカウントは1から始まります。 offset が0の場合、空の文字列が返されます。 offset が負の場合、部分文字列は文字列の先頭ではなく末尾から pos 文字で始まります。オプションの引数 length は、返される部分文字列の最大バイト数を指定します。

文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。

構文

引数

  • s — 部分文字列を取得する文字列。文字列FixedStringまたはEnum
  • offsets で部分文字列の開始位置。(U)Int*
  • length — 部分文字列の最大長。(U)Int*。オプション。

戻り値

offset で始まる s の部分文字列の長さだけのバイト。

実装の詳細

文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。

結果:

substringIndex

delimcount 回出現する前の s の部分文字列を返します。SparkやMySQLと同様です。

構文

エイリアス: SUBSTRING_INDEX

引数

  • s — 部分文字列を抽出する文字列。文字列
  • delim — 分割する文字。文字列
  • count — 部分文字列を抽出する前に数える区切り文字の出現回数。 count が正の場合、最後の区切り文字の左側のすべてが返されます(左から数えて)。 count が負の場合、最後の区切り文字の右側のすべてが返されます(右から数えて)。 UIntまたはInt

結果:

substringIndexUTF8

delimcount 回出現する前の s の部分文字列を返します。具体的にはUnicodeコードポイントのためです。

文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。

構文

引数

  • s — 部分文字列を抽出する文字列。文字列
  • delim — 分割する文字。文字列
  • count — 部分文字列を抽出する前に数える区切り文字の出現回数。 count が正の場合、最後の区切り文字の左側のすべてが返されます(左から数えて)。 count が負の場合、最後の区切り文字の右側のすべてが返されます(右から数えて)。 UIntまたはInt

戻り値

delimcount 回出現する前の s の部分文字列。文字列

実装の詳細

文字列が有効なUTF-8エンコードテキストを含むと仮定します。この仮定が破られた場合、例外はスローされず、結果は未定義となります。

結果:

appendTrailingCharIfAbsent

文字列 s が空でなく、文字 c で終わっていない場合、文字 c を文字列 s に追加します。

構文

convertCharset

エンコーディング from からエンコーディング to に変換された文字列 s を返します。

構文

base58Encode

「Bitcoin」アルファベットでBase58を使用して文字列をエンコードします。

構文

引数

  • plaintext文字列の列または定数。

戻り値

結果:

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にエンコードします。

構文

引数

  • urlString カラムまたは定数。

返される値

  • 引数のエンコードされた値を含む文字列。

結果:

base64Decode

Stringを受け取り、RFC 4648に従ってbase64からデコードします。エラーが発生した場合は例外をスローします。

エイリアス: FROM_BASE64.

構文

引数

  • encodedString カラムまたは定数。文字列が有効なBase64エンコードの値でない場合、例外がスローされます。

返される値

  • 引数のデコードされた値を含む文字列。

結果:

base64URLDecode

base64エンコードされたURLを受け取り、RFC 4648に従って、URL固有の修正を加えたbase64からデコードします。エラーが発生した場合は例外をスローします。

構文

引数

  • encodedURLString カラムまたは定数。文字列が有効なBase64エンコードの値でURL固有の修正がされていない場合、例外がスローされます。

返される値

  • 引数のデコードされた値を含む文字列。

結果:

tryBase64Decode

base64Decodeと同様ですが、エラーが発生した場合は空の文字列を返します。

構文

引数

  • encodedString カラムまたは定数。文字列が有効なBase64エンコードの値でない場合は空の文字列を返します。

返される値

  • 引数のデコードされた値を含む文字列。

クエリ:

tryBase64URLDecode

base64URLDecodeと同様ですが、エラーが発生した場合は空の文字列を返します。

構文

引数

  • encodedURLString カラムまたは定数。文字列が有効なBase64エンコードの値でURL固有の修正がされていない場合は空の文字列を返します。

返される値

  • 引数のデコードされた値を含む文字列。

クエリ:

endsWith

文字列 strsuffix で終わるかどうかを返します。

構文

endsWithUTF8

文字列 strsuffix で終わるかどうかを返します。endsWithUTF8endsWith の違いは、endsWithUTF8strsuffix をUTF-8文字で一致させることです。

構文

結果:

startsWith

文字列 strprefix で始まるかどうかを返します。

構文

startsWithUTF8

Available in version 23.8 and later

文字列 strprefix で始まるかどうかを返します。startsWithUTF8startsWith の違いは、startsWithUTF8strsuffix をUTF-8文字で一致させることです。

結果:

trim

指定された文字を文字列の先頭または末尾から削除します。特に指定されていない場合、この関数は空白(ASCII文字32)を削除します。

構文

引数

  • trim_character — トリムする文字。 String
  • input_string — トリムする文字列。 String

返される値

先頭および/または末尾から指定された文字を削除した文字列。 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で特別な意味を持つ部分文字列のエスケープを解除します。これらの部分文字列は次のとおりです: &quot; &amp; &apos; &gt; &lt;

この関数は、数値文字参照をUnicode文字に置き換えます。両方の10進法(&#10003;)および16進法(&#x2713;)形式がサポートされています。

構文

引数

  • x — 入力文字列。 String

返される値

  • エスケープ解除された文字列。 String

結果:

decodeHTMLComponent

HTMLで特別な意味を持つ部分文字列のエスケープを解除します。たとえば: &hbar; &gt; &diamondsuit; &heartsuit; &lt; など。

この関数は、数値文字参照をUnicode文字に置き換えます。両方の10進法(&#10003;)および16進法(&#x2713;)形式がサポートされています。

構文

引数

  • x — 入力文字列。 String

返される値

  • エスケープ解除された文字列。 String

結果:

extractTextFromHTML

この関数は、HTMLまたはXHTMLからプレーンテキストを抽出します。

HTML、XML、またはXHTMLの仕様には100%準拠していませんが、実装は合理的に正確で高速です。ルールは次のとおりです。

  1. コメントはスキップされます。例: <!-- test -->。コメントは-->で終わらなければなりません。入れ子コメントは許可されません。 注意: <!--><!--->のような構造は、HTMLでは有効ではありませんが、他のルールによってスキップされます。
  2. CDATAはそのまま貼り付けられます。注意: CDATAはXML/XHTML特有であり、"最善を尽くす"という原則で処理されます。
  3. 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>
  4. 他のタグやタグのような要素は、内部にコンテンツがない場合にスキップされます。例: <a>.</a> 注意: このHTMLは不正であると見込まれています: <a test=">"></a> 注意: <><!>のようなタグもスキップされます。 注意: 終わりのないタグは入力の終わりまでスキップされます: <hello
  5. HTMLおよびXMLエンティティはデコードされません。これらは別の関数で処理する必要があります。
  6. テキスト内の空白は、特定のルールによって折りたたまれるか挿入されます。
    • 先頭と末尾の空白が削除されます。
    • 連続する空白が折りたたまれます。
    • ただし、テキストが他の要素によって区切られていて、空白がない場合、空白が挿入されます。
    • これは不自然な例を引き起こす可能性があります: Hello<b>world</b>, Hello<!-- -->world - HTMLでは空白がありませんが、関数はそれを挿入します。また考慮すべきは: Hello<p>world</p>, Hello<br>worldです。この動作はデータ分析、例えばHTMLを単語の集合に変換する際には合理的です。
  7. また、空白の正しい処理には、<pre></pre>およびCSSのdisplaywhite-spaceプロパティのサポートが必要です。

構文

引数

  • x — 入力テキスト。 String

返される値

  • 抽出されたテキスト。 String

最初の例は、いくつかのタグとコメントを含み、空白の処理も示しています。 2番目の例は、CDATAとscript要素の処理を示します。 3番目の例では、url関数によって取得された完全なHTML応答からテキストを抽出しています。

結果:

ascii

文字列 s の最初の文字のASCIIコードポイント(Int32として)を返します。

s が空である場合、結果は0です。最初の文字がASCII文字でない場合や、UTF-16のLatin-1サプリメント範囲にない場合、結果は未定義です。

構文

soundex

文字列のSoundexコードを返します。

構文

引数

返される値

  • 入力値のSoundexコード。 String

結果:

punycodeEncode

文字列のPunycode表現を返します。 文字列はUTF8エンコードされている必要があります。さもなくば、動作は未定義です。

構文

引数

返される値

  • 入力値のPunycode表現。 String

結果:

punycodeDecode

Punycodeエンコードされた文字列のUTF8エンコードされた平文を返します。 有効なPunycodeエンコードされた文字列が与えられない場合、例外がスローされます。

構文

引数

  • val — Punycodeエンコードされた文字列。 String

返される値

  • 入力値の平文。 String

結果:

tryPunycodeDecode

punycodeDecodeと同様ですが、有効なPunycodeエンコードされた文字列が与えられない場合、空の文字列を返します。

idnaEncode

ドメイン名のASCII表現(ToASCIIアルゴリズム)を返します。これは、アプリケーションにおける国際化ドメイン名(IDNA)メカニズムに従って行われます。入力文字列はUTF-エンコードされており、ASCII文字列に変換可能でなければなりません。そうでない場合は例外がスローされます。 注意: パーセントデコードやタブ、空白、制御文字のトリミングは行われません。

構文

引数

返される値

  • 入力値のIDNAメカニズムに従ったASCII表現。 String

結果:

tryIdnaEncode

idnaEncodeと同様ですが、エラーが発生した場合は例外をスローするのではなく、空の文字列を返します。

idnaDecode

ドメイン名のUnicode(UTF-8)表現(ToUnicodeアルゴリズム)を返します。これは、アプリケーションにおける国際化ドメイン名(IDNA)メカニズムに従います。 エラーが発生した場合(たとえば、入力が無効な場合)、入力文字列が返されます。 idnaEncode()およびidnaDecode()の繰り返し適用は、ケースの正規化のため、必ずしも元の文字列を返さないことに注意してください。

構文

引数

返される値

  • 入力値の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

返される値

  • 各単語の最初の文字が大文字に変換された valString

クエリ:

結果:

initcapUTF8

stringJaccardIndexのように、initcapUTF8は各単語の最初の文字を大文字にし、残りを小文字にします。有効なUTF-8エンコードされたテキストが含まれていると仮定します。 この仮定が守られない場合、例外はスローされず、結果は未定義になります。

注記

この関数は言語を検出しません。たとえば、トルコ語の場合、結果が完全に正確ではない場合があります(i/İ対i/I)。 UTF-8バイトシーケンスの長さがコードポイントの大文字と小文字で異なる場合、このコードポイントに対して結果が不正確になる可能性があります。

構文

引数

  • val — 入力値。 String

返される値

  • 各単語の最初の文字が大文字に変換された valString

クエリ:

結果:

firstLine

複数行の文字列から最初の行を返します。

構文

引数

返される値

  • 行区切りがない場合、最初の行または全体の値。 String

結果:

stringCompare

2つの文字列を辞書的に比較します。

構文

引数

  • string1 — 比較する最初の文字列。 String
  • string2 - 比較する2番目の文字列。String
  • string1_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)。

結果:

結果: