std.string
文字列を扱う関数の集まりです。型 string, wstring, dstring の値は、文字単位の書き換えを許していません。 文字列構築途中の一文字ずつの書き換えには、 char[], wchar[], dchar[] を使用します。*string 型の 利用は、意図しないエイリアスによる問題を起こしにくくするため推奨されており、 これを使うことでよりロバストなコードになります。 Source:std/string.d
License:
Boost License 1.0. Authors:
Walter Bright, Andrei Alexandrescu
- 文字列関数内でのエラー時に投げられます。
- 0..9A..F
- 0..9
- 0..7
- a..z
- A..Za..z
- A..Z
- ASCII の空白文字
- UTF の改行文字
- UTF の改段落文字
- このシステムでの改行文字列
- c が空白文字のとき true を返します
- 二つの文字列を比較します。cmp は大文字小文字を区別します。
icmp は区別しません。
Returns:< 0 s1 < s2 = 0 s1 == s2 > 0 s1 > s2 - Dの配列をC風の0終端文字列へ変換します。
s[] の中に \0 が含まれていてはいけません。
- 検索の際に大文字小文字を区別するかどうかのフラグです
- indexOf: 文字 c の、文字列 s での最初の出現位置を返します。lastIndexOf: 文字 c の、文字列 s での最後の出現位置を返します。CaseSensitive.yes 指定は、大文字小文字を区別して検索することを意味します。
Returns:
見つかったら c の出現したindexを、見つからなければ -1 を返します。
- 文字列 s 中の sub の最初/最後の出現位置を返します。
CaseSensitive cs によって、
大文字小文字の区別を制御します。
Returns:
見つかったら sub[] の出現したindexを、見つからなければ -1 を返します。
- 文字列を小文字に変換
- 文字列 s をinplaceで小文字に変換
- 文字列を大文字に変換
- 文字列 s をinplaceで大文字に変換
- 最初の一文字を大文字、
残りを小文字に変換します
- 文字列中の全ての単語をキャピタライズします。
また、先頭と末尾の全ての空白を除き、
連続する空白文字を一文字にまとめます。
- 文字列 s[] を n 回繰り返し結合した文字列を返します
- sep をセパレータとして全ての文字列を結合します
- s[] を単語の配列へ分割します。
空白文字を区切りとして使います。
- s[] を単語の配列へ分割します。
delim[] を区切りとして使います。
- s[] を行の配列へ分割します。
CR, LF, CR-LF を区切りとして使います。
改行文字そのものは結果文字列には含まれません。
- 先頭、末尾、あるいは両方の空白文字を取り除きます。
- s[] から末尾の delimiter[] を(もし存在すれば)取り除いた文字列を返します。
delimiter[] が null の時、末尾の CR,LF,CRLF が全て取り除かれます。
- longer.startsWith(shorter) が真なら longer[shorter.length .. $] を返し、それ以外では longer を返します。
- s[] から末尾の文字を取り除いた文字列を返します。
最後の二文字が CR-LF であれば、二文字とも取り除きます。
- 幅 width
文字の中で文字を左寄せ/右寄せ/センタリングします。
- rjustify() と同じですが、空白でなく '0' で埋めます。
- s[] での from[] の出現を to[] に置き換えた文字列を返します。
- 文字列 s[] のスライス slice[] を replacement[] に置き換えた文字列を返します。
- s[] の位置 indxe に sub[] を挿入した文字列を返します。
- s[] 内での sub[] の出現回数をカウントします。
- タブを適切な個数の空白文字へ置き換えます。
tabsize がタブ幅です。
- 文字列 s 内の空白文字を最適な個数のタブ文字に置き換えます。
行末の空白やタブは削除されます。
Params:
string s 変換したい文字列 int tabsize tabsize 個の空白がタブ幅になります。デフォルトは8です。
- translate() 用の変換テーブルを作成
BUG:
ASCII文字に対してのみ動作します
- s[] 内の文字を、maketrans() で作られたテーブルに従って変換します。
delchars[] 内の文字は削除します。
BUG:
ASCII文字に対してのみ動作します - 引数を文字列へと整形します。
- 引数を整形して文字列 s へ格納します。
サイズが小さすぎる場合は RangeError を投げます。
Returns:
s
- 文字 c が pattern に含まれるか否か判定
Patterns:
pattern は、正規表現で言う 文字列クラス のような文字の配列です。基本的には文字の列によって指定することができます。 例えば、"abcde" などです。また、'-' 文字は文字の範囲を表現します。 例えば "a-e" は "abcde" と同じパターンを表現し、 "a-fA-F0-9" は16進表現に使う全ての文字を表現します。 もし最初の文字が '^' ならば、 パターンが反転されます。つまり例えば、"^0-9" は数字以外の文字を意味します。 以下の関数 inPattern, countchars, removeschars, squeeze がpatternを使います。
Note:
将来的には、 pattern の構文はより正規表現の文字クラスに近い形へと改良される予定です。
- c が patterns の全てのパターンに含まれているか否かを返します
- 文字列 s 中の pattern に含まれる文字の数を返します。
- 文字列 s のうち、pattern にマッチした文字を全て取り除いたものを返します。
- pattern
にマッチする文字の複数文字の繰り返しを取り除きます。
pattern が null ならば、全ての文字が適用対象になります。
- s の中で最初に pattern (inPattern で定義されているもの) とマッチしない文字の位置
pos を探し、s =
s[pos..$] と更新します。返値は、
更新前の文字列の pos の手前までのスライスです。
Example:
string s = "123abc"; string t = munch(s, "0123456789"); assert(t == "123" && s == "abc"); t = munch(s, "0123456789"); assert(t == "" && s == "abc");
この munch 関数は、parse中に なにかの種類の文字 (例えばホワイトスペース) を読み飛ばしたいときに便利です。 (この場合は、返値は使用されません。)
- s の'直後'の文字列を返します。
右端の文字が a-zA-Z0-9 ならば、大文字小文字や数字という元の文字種を変えない範囲で
1つ後ろの文字に変更します。 繰り上がりがある場合は、
すぐ左の文字に対して処理が繰り返されます。
- from に含まれている文字が str の中にあると、
str のその部分を対応する to の文字に置き換え、
置換結果の文字列を返します。
Params:string modifiers modifier文字の並び
Modifiers:
Modifier Description c from の文字集合の補集合をとります。 d to に対応要素がない場合、その文字は削除します。 s 置換後の文字列で同じ文字が隣り合っていたら重なりを除去します。
Modifier d がある場合、 to は0文字か1文字でなければなりません。
Modifier d がなく、to が null ならば、 to は from と同じ文字列が使用されます。
Modifier d がなく、to が from より短い場合、 to は to の最後の文字を繰り返す形で拡張されます。
from も to も、- 文字を使った範囲の表現を含むことができます。 例えば a-d は abcd と同義です。 ^ を補集合の意味で使うことはできません。 (この目的には Modifier c を使います。)
- 文字列 s が以下の形式かどうかを確かめます:
整数: (for byte, ubyte, short, ushort, int, uint, long, and ulong) ['+'|'-']digit(s)[U|L|UL]
Examples:
123, 123UL, 123L, +123U, -123L
浮動小数点数: (for float, double, real, ifloat, idouble, and ireal) ['+'|'-']digit(s)[.][digit(s)][[e-|e+]digit(s)][i|f|L|Li|fi]] or [nan|nani|inf|-inf]
Examples:
+123., -123.01, 123.3e-10f, 123.3e-10fi, 123.3e-10L
(for cfloat, cdouble, and creal) ['+'|'-']digit(s)[.][digit(s)][[e-|e+]digit(s)][+] [digit(s)[.][digit(s)][[e-|e+]digit(s)][i|f|L|Li|fi]] or [nan|nani|nan+nani|inf|-inf]
Examples:
nan, -123e-1+456.9e-10Li, +123e+10+456i, 123+456
[in] bool bAllowSep デフォルトではfalseです。true にした場合、文字列中の "," や "" といったセパレータを無視して判定します。ただし 変換関数 toInt(), toFloat() などに渡す前には、 これらの文字を取り除かないと エラーになります。
また、先頭、末尾、途中といった場所を問わず、 空白文字は許可されていないことに注意してください。 つまり、この関数やその他変換関数に渡す前に、 空白文字はあらかじめ取り除いておく必要があります。
- 引数として任意のオブジェクトを取ります
- 第一引数のみを検査し、残りは無視します
- Soundex アルゴリズム
Soundex アルゴリズムは、発音に基づいて英単語を4文字の文字列に 変換します。 これは、似た発音をもつ綴りに同じSoudex値を割り当てることで、 名前のあいまい検索のインデックス等に 活用できるようにするものです。
Params:
string string Soundex 表現に変換したい文字列 char[] buffer Soundex の結果を格納する4文字の配列を指定します。 null を指定すると、 返値用のバッファはヒープに確保されます。
Returns:
Soundexアルゴリズムの結果を返す4文字の配列を返します。 string に対応するSoundex表現がない場合、null を返します。
See Also:
Wikipedia, The Soundex Indexing System
BUGS:
英語の名前に対してのみ動作します。 他により良い結果を返すといわれる Soundex アルゴリズムもありますが、 これが標準的な方式です。
- value に含まれる文字列の中の一つを確定するのに
十分な長さの全ての省略形からの連想配列を返します。
この関数は、ユーザが既知の文字列集合のうちのどれかをタイプする際に、 十分な文字が入力されたら プログラムが自動補完して ユーザーの手間を減らす処理などに役立ちます。
Example:
import std.stdio; import std.string; void main() { static string[] list = [ "food", "foxy" ]; auto abbrevs = std.string.abbrev(list); foreach (key, value; abbrevs) { writefln("%s => %s", key, value); } }
以下のように出力されます:fox => foxy food => food foxy => foxy foo => food
- 文字列 string が0桁目から開始するとしたとき、
文字列全体の右端が何桁目に達するかを返します。
- 文字列の折り返し処理をします。
入力文字列 s を、\nでいくつかの行に分割して 段落の形にします。 各行の長さは columns を超えないように 調整されます。 最後の行は \n で終了します。
Params:
string s 折り返し処理の対象とする文字列 int columns 段落の最大桁数 string firstindent 段落の先頭行のインデントに用いる文字列 string indent 段落の後続行のインデントに用いる文字列 int tabsize タブの桁数
Returns:
変換結果の段落文字列 -
- レンジとして操作するためのプリミティブ