UDN
Search public documentation:

StringsInUnrealScriptJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > UnrealScript > UnrealScript の文字列


UnrealScript の文字列


概要


Object クラスと Actor クラスには、UnrealScript 内で文字列を使用した動作や文字列に対する動作を実行するための演算子と関数が多数含まれています。このドキュメントでは、それらの演算子と関数について詳細な解説を行います。

Operators


$ (ドル記号)

string $ ( coerce string A, coerce string B )

$ 演算子は、2 つの文字列 (たとえば AB ) を連結させます。 A または B が文字列ではない場合は、文字列型の値への変換を試みます。

例 :

`log("Unreal"$"Script"); //prints "UnrealScript"

$=

string $= ( out string A, coerce string B )
<

$= 演算子は、2 つの文字列 AB を連結させ、その結果得られる文字列を第 1 の文字列 A に代入します。 B が文字列ではない場合は、文字列型の値への変換を試みます。

例 :

MyString = "Unreal";
MyString $= "Script"; // MyString contains "UnrealScript"

@ (at)

string @ ( coerce string A, coerce string B )

@ 演算子は、2 つの文字列 AB の間にスペースを 1 文字分入れて連結させます。 A または B が文字列ではない場合は、文字列型の値への変換を試みます。

例 :

log("Unreal"@"Engine"); //prints "Unreal Engine"

@=

string @= ( out string A, coerce string B )

@= 演算子は、2 つの文字列 AB の間にスペースを 1 文字分入れて連結させ、その結果得られる文字列を第 1 の文字列 A に代入します。 B が文字列ではない場合は、文字列型の値への変換を試みます。

例 :

MyString = "Unreal";
MyString @= "Engine"; // MyString contains "Unreal Engine"

< (不等号の「小なり」)

bool < ( string A, string B )

< 演算子は、2 つの文字列 AB のうち、アルファベット順で第 1 の文字列 A が第 2 の文字列 B よりも先に位置する場合に true を返します。大文字は小文字よりも常に順位が先であることに注意してください。大文字小文字が問題ではない場合は、 Caps の使用について検討してください。

例 :

("Monkey" < "Robot") //this is TRUE.

> (不等号の「大なり」)

bool > ( string A, string B )

> 演算子は、2 つの文字列 AB のうち、アルファベット順で第 1 の文字列 A が第 2 の文字列 B よりも後ろに位置する場合に true を返します。大文字は小文字よりも常に順位が先であることに注意してください。大文字小文字が問題ではない場合は、 Caps の使用について検討してください。

例 :

("Batman" > "Aquaman") //this is TRUE.

<= (不等号の「小なりイコール」)

bool <= ( string A, string B )

<= 演算子は、2 つの文字列 AB のうち、アルファベット順で第 1 の文字列 A が第 2 の文字列 B よりも先に位置するか、同じである場合に true を返します。大文字は小文字よりも常に順位が先であることに注意してください。大文字小文字が問題ではない場合は、 Caps の使用について検討してください。

例 :

("Monkey" <= "Robot")  //this is TRUE.
("Monkey" <= "Monkey") //this is TRUE.

>= (不等号の「大なりイコール」)

bool >= ( string A, string B )

>= 演算子は、2 つの文字列 AB のうち、アルファベット順で第 1 の文字列 A が第 2 の文字列 B よりも後ろに位置するか、同じである場合に true を返します。大文字は小文字よりも常に順位が先であることに注意してください。大文字小文字が問題ではない場合は、 Caps の使用について検討してください。

例 :

("Monkey" >= "Robot")  //this is FALSE.
("Monkey" >= "Monkey") //this is TRUE.

== (イコール イコール)

bool == ( string A, string B )

== 演算子は、2 つの文字列 AB が同一である場合に true を返します。この演算子による比較は、ケースセンシティブであることに注意してください。

例 :

("Monkey" == "Robot")  //this is FALSE.
("Monkey" == "Monkey") //this is TRUE.
("Monkey" == "monkey") //this is FALSE.

!= (等しくない)

bool != ( string A, string B )

!= 2 つの文字列 AB が同一ではない場合に true を返します。この演算子による比較は、ケースセンシティブであることに注意してください。

例 :

("Monkey" != "Robot")  //this is TRUE.
("Monkey" != "Monkey") //this is FALSE.
("Monkey" != "monkey") //this is TRUE.

~= (チルダ イコール)

bool ~= ( string A, string B )

~= 演算子は、2 つの文字列 AB が、大文字小文字にかかわらず同一である場合に true を返します。

例 :

("Monkey" ~= "Robot")  //this is FALSE.
("Monkey" ~= "Monkey") //this is TRUE.
("Monkey" ~= "monkey") //this is TRUE.

-= (マイナス イコール)

string -= ( out string A, coerce string B );

-= 演算子は、文字列 A の中に含まれる文字列 B の要素を除去するとともに、その結果得られる文字列を A に代入します。この演算子はケースセンシティブです。 B が文字列ではない場合は、文字列型の値への変換を試みます。

例 :

MyString = "test: this is a test";
MyString -= "test";
log(MyString); // prints: ": this is a ";

オブジェクト関数


Len

int Len ( coerce string S )

文字列の長さを返します。

例 :

Len("this"); //returns 4;

InStr

int InStr ( coerce string S, coerce string t )

InStr() 関数は、文字列 S の中で副文字列 t が最初に現れる位置を返します。副文字列が見つからなかった場合は、-1 を返します。この検索はケースセンシティブです。したがって、大文字小文字に関係しない場合は、 InStr を使用する前に Caps を呼び出すことを検討してください。 S または t が文字列ではない場合は、文字列型の値への変換を試みます。

例 :

InStr("These PANTS rock!", "PANTS"); //returns 6
InStr("These PANTS rock!", "pants"); //returns -1
InStr( Caps("These PANTS rock!"), Caps("pants") ); //returns 6

Mid

string Mid ( coerce string S, int i, optional int j )

Mid() 関数は、文字列 Si 番目の文字から始めて j 個分の文字をコピーして副文字列を生成します。 j が省略されている場合は、残りの文字列がすべてコピーされます。 i が取りうる値の範囲は 0 からその文字列の長さまでです。 i が取りうる値の範囲は i からその文字列の長さまでです。 S が文字列でない場合は、文字列型値への変換を試みます。

例 :

Mid("These PANTS rock!", 6, 5); //returns "PANTS"
Mid("These PANTS rock!", 6); //returns "PANTS rock!"

Left

string Left ( coerce string S, int i )

Left() 関数は、指定された文字列 S の左端から i 文字分を返します。添字 i の文字よりも左側にある文字列を返しますが、添字 i の文字自体はそれに含まれません。 S が文字列でない場合は、文字列型値への変換を試みます。

例 :

Left("These PANTS rock!", 5); //returns "These"

Right

string Right ( coerce string S, int i )

Right() 関数は、指定された文字列 S の右端から i 文字分を返します。 S が文字列でない場合は、文字列型値への変換を試みます。

例 :

Right("These PANTS rock!", 5); //returns "rock!"

Caps

string Caps ( coerce string S )

Caps() 関数は、指定された文字列 S をすべて大文字化して返します。 S が文字列でない場合は、文字列型値への変換を試みます。

例 :

Caps("wooo"); //returns "WOOO"

Locs

string Locs ( coerce string S )

Locs() 関数は、指定された文字列 S をすべて小文字化して返します。 S が文字列でない場合は、文字列型値への変換を試みます。

例 :

Locs("WoOo"); //returns "wooo"

Chr

string Chr ( int i )

Chr() 関数は、指定された整数型の文字列表現を返します。Unicode の範囲 0 - 65535 の値を指定することができます。

例 :

Chr(65); //returns "A"

Asc

int Asc ( string S )

Asc() 関数は、指定された文字列 S の中で先頭に位置している文字の Unicode 文字表現を返します。

例 :

Asc("A"); //returns 65

Repl

string Repl ( coerce string Src, coerce string Match, coerce string With, optional bool bCaseSensitive )

Repl() 関数は、 Src の中に含まれている Match をすべて With で置き換えます。 SrcMatchWith が文字列型ではない場合は、文字列型の値への変換を試みます。

例 :

Repl("This is a test", "is", "was"); // produces "Thwas was a test";
Repl("Two be or not two be", "two", "to", true); // returns "Two be or not to be"
Repl("Two be or not two be", "two", "to", false); // returns "to be or not to be"

分割

static final function string Split(coerce string Text, coerce string SplitStr, optional bool bOmitSplitStr)

Split() 関数は、 SplitStr が最初に出てきたところで Text を分割し、 Text の残りの部分を返します。 bOmitSplitStr がTRUE の場合は、 Text の残りの部分から SplitStr を除外します。それ以外の場合は、 SplitStr を含めます。 Text または SplitStr が文字列型ではない場合は、文字列型の値への変換を試みます。

例 :

Split("Unreal Engine uses UnrealScript as its scripting language", "scripting", false); // returns "scripting language"
Split("Unreal Engine uses UnrealScript as its scripting language", "scripting", true); // returns " language"

GetRightMost

string GetRightMost( coerce string Text )

GetRightMost() 関数は、 Text の中で一番右側にある '_ (アンダーバー)' よりもさらに右側にある副文字列を返します。アクタ名の数字などがこの副文字列に該当します。 Text が文字列型ではない場合は、文字列型の値への変換を試みます。

例 :

GetRightMost("CoverLink_45"); // returns "45"

JoinArray

JoinArray(array<string> StringArray, out string out_Result, optional string delim = ",", optional bool bIgnoreBlanks = true)

JoinArray() 関数は、 StringArray 文字列配列をもとにして単一の文字列を作り、 out_Result に代入します。単一の文字列の内部では、 delim で指定された区切り記号が使われます。 bIgnoreBlanks が TRUE の場合は、空の StringArray の要素は無視されます。

例 :

Maps[0] = "Deck";
Maps[1] = "Necropolis";
Maps[2] = "Sandstorm";
Maps[2] = "Sanctuary";
JoinArray(Maps, MapString); // MapString contains "Deck,Necropolis,Sandstorm,Sanctuary"

ParseStringIntoArray

ParseStringIntoArray(string BaseString, out array<string> Pieces, string Delim, bool bCullEmpty)

ParseStringIntoArray() 関数は、指定された区切り記号 Delim にしたがって、1 個の文字列を、文字列配列の複数の要素に分割します。 bCullEmpty が TRUE の場合は、区切り記号が連続しても、通常の場合には作成される空の要素が配列に追加されません。

例 :

ParseStringIntoArray("Deck,Necropolis,,Sandstorm,Sanctuary", Maps, ",", false); // Maps contains {Deck, Necropolis, , Sanstorm, Sanctuary}
ParseStringIntoArray("Deck,Necropolis,,Sandstorm,Sanctuary", Maps, ",", true); // Maps contains {Deck, Necropolis, Sanstorm, Sanctuary}

SplitString

array<string> SplitString( string Source, optional string Delimiter=",", optional bool bCullEmpty )

SplitString() 関数は、 ParseStringIntoArray() 関数を使用して、1 個の文字列を文字列配列の要素に分割するラッパー関数です。唯一の実際的な相違点は、配列が 出力 パラメータではなく、 SplitString() 関数の戻り値であるということです。

例 :

SplitString("Deck,Necropolis,,Sandstorm,Sanctuary", ",", false); // returns array of {Deck, Necropolis, , Sanstorm, Sanctuary}
ParseStringIntoArray("Deck,Necropolis,,Sandstorm,Sanctuary", ",", true); // returns array of {Deck, Necropolis, Sanstorm, Sanctuary}

Actor 関数


ReplaceText

function ReplaceText(out string Text, string Replace, string With)

ReplaceText() 関数は、結果が入力文字列の Str に代入される点を除いて、_Repl()_ 関数と同じです。

例 :

Str = "This is a test";
ReplaceText(Str, "is", "was"); // Str contains "Thwas was a test";

Str = "Two be or not two be";
ReplaceText(Str, "two", "to"); // Str contains "Two be or not to be"

GetItemName

String GetItemName( string FullName )

GetItemName() 関数は、"Package.Item" 文字列を受け取り、その中から "Item" の部分を返します。

例 :

GetItemName(string(self)); // returns the class name
GetItemName("Package.Group.bla.Item"); // return "Item"

特別な注意事項


文字列の結合と代入

次のようなスクリプトコードをよく見かけます。

for ( i = 0; i < Count; i++ )
{
      if ( MyString != "" )
      {
            MyString = MyString + ", ";
      }
      MyString = MyString + NextArrayValue[i];
}

現在は、文字列の結合と代入を実行するための演算子が 2 つあります。すなわち、次の 2 つです。

native(322) static final operator(44) string $= ( out  string A, coerce string B );
native(323) static final operator(44) string @= ( out  string A, coerce string B );

これらの演算子を使用すると上記のコードは次のように書き換えることができます。

for ( i = 0; i < Count; i++ )
{
      if ( MyString != "" )
      {
            MyString $= ", ";
      }
      MyString $= NextArrayValue[i];
}

このように書き換えたのは、 $= 演算子が速いからです!

2 つのコードで実際に処理されていることを次にあげてみます。

MyString = MyString + NextArrayValue[i];

  1. 左辺を評価する。 MyString 変数のためのアドレスを調べる。
  2. 右辺を評価する。 + 演算子を呼び出す (execString_Concat)
  3. MyString 変数のアドレスを調べる。 + 演算子によって使われる一時バッファにその値をコピーする。
  4. NextArrayValue のアドレスを調べる。 (execArrayElement) + 演算子によって使われる一時バッファにその値をコピーする。
  5. 2 つの一時バッファを足し合わせる。その文字列を MyString にコピーする。

MyString $= NextArrayValue[i];

  1. MyString 変数のためのアドレスを調べる。
  2. NextArrayValue[i] 変数のためのアドレスを調べる。その値を直接 MyString に加える。