テキスト
連結には両側に Text が必要
+ は 2 つの Text を連結します。"Count: " + 5 は "Count: 5" に なりません。異なる種類の組み合わせの
既定値である Integer の 0 になります。数値、Bool、ハンドルは、先に StringFormat で Text に変換してください。
StringFormat(format, value0, value1)
- すべての
{0}をvalue0に、すべての{1}をvalue1に置き換えます。どちらの値も任意の種類にできます。{2}や、{0:N2}のような書式指定子はありません。 - 引数は常に 3 つです。 使用しない値には
""を渡します:StringFormat("{0} items", n, "")。 - 3 つ以上の値を扱うには、呼び出しを入れ子にするか、結果を連結します (下記の例を参照)。
- Real は常に小数点以下 6 桁で表示されます (
0.500000)。整数で表示するには先に Integer に丸め、 固定小数点で出力するにはスケーリングします (MathRound(r * 100))。 {0}は{1}より先に置き換えられるため、value0のテキスト自体に{1}が含まれていると、それも置き換えられます。
w = WindowGetActive();
s = StringFormat(StringFormat("{0} x {1} at ", WindowGetWidth(w), WindowGetHeight(w)) + "({0}, {1})",
WindowGetX(w), WindowGetY(w));
UtilityPrint(s); // 例: 1280 x 720 at (100, 80)
長さの取得、検索、切り出し
StringGetLengthは文字数ではなく UTF-16 コード単位の数を数えます。基本多言語面 (BMP) の外にある絵文字は 2 と数えられます。StringGetIndexOf(text, search)は 0 から始まるインデックスを返し、searchが見つからない場合は-1を返します。 大文字と小文字は区別され、「最後に出現する位置」を求める関数はありません (ループで走査します)。StringGetSubstring(text, start, length):startは 0 から始まります。末尾を超えるlengthは切り詰められ、 末尾以降のstartは""を返します。startまたはlengthが 負の値 の場合はエラーとなり、アクションが停止します。- インデックス構文 (
s[0]) はありません。1 文字を取り出すにはStringGetSubstring(s, i, 1)を使用します。 StringContains、StringStartsWith、StringEndsWith、StringReplaceは完全一致で、大文字と小文字を区別します。 大文字と小文字を区別しないテストには、先に両側を小文字に変換します。StringToUpper/StringToLowerはユーザーのロケールの大文字・小文字の規則に従うため、 トルコ語の点付き/点なしの i も正しく処理されます。StringTrimは両端の空白を取り除きます。Windows の\r\n改行から残った\rも取り除かれます。StringReplaceとStringSplitは、検索テキストまたは区切り文字が空の場合にアクションを停止します。
分割結果はインデックスで読み取るキャッシュ
値はリストを保持できないため、StringSplit(text, delimiter) は分割した各部分を実行中のスクリプトのコンテキストに格納し、
その数を返します。各部分は StringGetSplitPartAt(i) で読み取ります。範囲外のインデックスは "" を返します。
同じスクリプト内で次に StringSplit を実行すると、そのキャッシュは 置き換えられる ため、
別のものを分割する前に、必要な部分を変数にコピーしてください。…EnumerateAll、…FindAll…、…GetAll…
の各組み込み関数も、対応する …EnumeratedAt の読み取り関数と組み合わせて同じように動作します。
テキストの比較
== は完全一致で、大文字と小文字を区別します。</> は UTF-16 コード単位による序数比較で、辞書順ではありません:
ASCII の大文字はすべて小文字より前に並び、アクセント付きの文字は z より後に並びます。
この順序をユーザーにアルファベット順として示さないでください。