UDN
Search public documentation:

StringsInUnrealScriptKR
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 홈 > 언리얼스크립트 > 언리얼스크립트의 문자열

언리얼스크립트의 문자열


문서 변경내역: Jeff Wilson 업데이트. 홍성진 번역.

개요


오브젝트와 액터 클래스에는 언리얼스크립트와 함께, 또는 그 상에서 동작을 수행하는 연산자나 함수가 많이 포함되어 있습니다. 여기서는 그 연산자와 함수를 자세히 다루겠습니다.

연산자


$ (합침)

string $ ( coerce string A, coerce string B )

$ 연산자는 두 문자열 AB 를 받아다가 합칩니다. A 또는 B 중 하나가 문자열이 아니면 문자열 값으로의 변환을 시도합니다.

예제:

`log("Unreal"$"Script"); // "UnrealScript" 출력

$= (합쳐 할당)

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

$= 연산자는 두 문자열 AB 를 받아다가 합친 다음, 결과 문자열을 첫째에다 할당합니다. B 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

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

@ (단어 합침)

string @ ( coerce string A, coerce string B )

@ 연산자는 두 문자열 AB 를 받아다가 그 사이에 공백을 두고 합칩니다. A 또는 B 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

log("Unreal"@"Engine"); //"Unreal Engine" 출력

@= (단어 합쳐 할당)

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

@= 연산자는 두 문자열 AB 를 받아다가 그 사이에 공백을 두고 합친 다음, 결과 문자열을 첫째에다 할당합니다. B 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

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

< (작으면)

bool < ( string A, string B )

두 문자열을 받아다가 첫 문자열의 알파벳 순이 둘째 문자열보다 앞에 있으면 true를 반환합니다. 대문자는 소문자보다 항상 앞에 있음을 알아두시기 바랍니다. 대소문자가 상관이 없으면 Caps 도 좋겠습니다.

예제:

("Monkey" < "Robot") // 참

> (크면)

bool > ( string A, string B )

두 문자열을 받아다가 첫 문자열의 알파벳 순이 둘째 문자열보다 뒤에 있으면 true를 반환합니다. 대문자는 소문자보다 항상 앞에 있음을 알아두시기 바랍니다. 대소문자 상관이 없으면 Caps 도 좋겠습니다.

예제:

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

<= (작거나 같으면)

bool <= ( string A, string B )

두 문자열을 받아다가 첫 문자열의 알파벳 순이 둘째 문자열보다 앞에 있거나 같으면 true를 반환합니다. 대문자는 소문자보다 항상 앞에 있음을 알아두시기 바랍니다. 대소문자 상관 없이라면 Caps 도 좋겠습니다.

예제:

("Monkey" <= "Robot")  //TRUE 입니다.
("Monkey" <= "Monkey") //TRUE 입니다.

>= (크거나 같으면)

bool >= ( string A, string B )

두 문자열을 받아다가 첫 문자열의 알파벳 순이 둘째 문자열보다 뒤에 있거나 같으면 true를 반환합니다. 대문자는 소문자보다 항상 앞에 있음을 알아두시기 바랍니다. 대소문자 상관 없이라면 Caps 도 좋겠습니다.

예제:

("Monkey" >= "Robot")  //FALSE 입니다.
("Monkey" >= "Monkey") //TRUE 입니다.

== (같으면)

bool == ( string A, string B )

두 문자열을 받아다가 서로 같으면 true를 반환합니다. 대소문자를 구별합니다.

예제:

("Monkey" == "Robot")  //FALSE 입니다.
("Monkey" == "Monkey") //TRUE 입니다.
("Monkey" == "monkey") //FALSE 입니다.

!= (같지 않으면)

bool != ( string A, string B )

두 문자열을 받아다가 서로 같지 않으면 true를 반환합니다. 대소문자를 구별합니다.

예제:

("Monkey" != "Robot")  //TRUE 입니다.
("Monkey" != "Monkey") //FALSE 입니다.
("Monkey" != "monkey") //TRUE 입니다.

~= (대충 같으면)

bool ~= ( string A, string B )

두 문자열을 집어다가 대소문자 상관없이 서로 같으면 true를 반환합니다.

예제:

("Monkey" ~= "Robot")  //FALSE 입니다.
("Monkey" ~= "Monkey") //TRUE 입니다.
("Monkey" ~= "monkey") //TRUE 입니다.

-= (빼서 할당)

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

A에 나타난 B를 전부 뺀 결과를 A에 할당합니다. 대소문자를 구별하는 연산자이며, B 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

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

오브젝트 함수


Len

int Len ( coerce string S )

문자열 길이를 반환합니다.

예제:

Len("this"); // 4 반환;

InStr

int InStr ( coerce string S, coerce string t )

InStr() 함수는 S 에서 서브스트링 t 가 처음 나타난 위치를 반환합니다. 서브스트링이 없는 경우 InStr 반환값은 -1 입니다. 대소문자를 구별하여 검색하니, 대소문자 관계 없이 검색하려는 경우 InStr 사용 이전에 Caps 호출을 고려해 보시기 바랍니다. S 또는 t 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

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

Mid

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

Mid() 함수는 Si 번째 문자부터 j 개의 문자를 복사하여 서브스트링으로 만듭니다. j 가 생략되면 나머지 문자열을 복사합니다. i 값은 0에서 문자열 길이까지로 고정됩니다. j 값은 i 에서 문자열 길이까지로 고정됩니다. S 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

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

Left

string Left ( coerce string S, int i )

Left() 함수는 지정된 문자열 S 의 왼쪽에서부터 i 개 문자를 반환합니다. 인덱스 i 번째의 캐릭터는 제외하고, 그 왼쪽의 문자열을 반환합니다. S 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

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

Right

string Right ( coerce string S, int i )

Right() 함수는 지정된 문자열 S 의 오른쪽에서부터 i 개 문자를 반환합니다. S 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

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

Caps

string Caps ( coerce string S )

Caps() 함수는 지정된 문자열 S 의 대문자 버전을 반환합니다. S 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

Caps("wooo"); // "WOOO" 반환

Locs

string Locs ( coerce string S )

Locs() 함수는 지정된 문자열 S 의 소문자 버전을 반환합니다. S 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

Locs("WoOo"); // "wooo" 반환

Chr

string Chr ( int i )

Chr() 함수는 지정된 정수값에 해당하는 문자를 반환합니다. 유니코드 0-65535 범위내 아무 값이나 가능합니다. S 가 문자열이 아닌 경우, 문자열 값으로의 변환을 시도합니다.

예제:

Chr(65); // "A" 반환

Asc

int Asc ( string S )

Asc() 함수는 지정된 문자열 S 의 첫 글자에 해당하는 유니코드 수치를 반환합니다.

예제:

Asc("A"); // 65 반환

Repl

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

Repl() 함수는 Src 에서 일치하는 MatchWith 로 대체(REPLace)합니다. Src, Match, With 가 문자열이 아닌 경우, 문자열 값으로의 전환을 시도합니다.

예제:

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

Split

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

Split() 함수는 Text 에서 SplitStr 이 처음 나타나는 부분까지 분할해 내고, Text 의 나머지 부분을 반환합니다. bOmitSplitStr (분할 문자열 생략여부)가 참이면, 반환되는 Text 의 나머지 부분에서 SplitStr 이 생략되고, 거짓이면 포함됩니다. Text, SplitStr 이 문자열이 아닌 경우, 문자열 값으로의 전환을 시도합니다.

예제:

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

GetRightMost

string GetRightMost( coerce string Text )

GetRightMost() 함수는 가장 오른쪽 '_' 문자 이후에 나오는 Text 의 서브스트링, 즉 액터 이름의 번호같은 것을 구합니다. Text 가 문자열이 아닌 경우, 문자열 값으로의 전환을 시도합니다.

예제:

GetRightMost("CoverLink_45"); // "45" 반환

JoinArray

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

JoinArray() 함수는 delim 으로 지정된 구획 문자를 사용하여 StringArray 문자열 배열에서 문자열 하나를 만든 다음, 결과 문자열을 out_Result 에 할당합니다. bIgnoreBlanks (공백 무시여부)가 참이면, StringArray 의 공백 요소는 무시됩니다.

예제:

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

ParseStringIntoArray

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

ParseStringIntoArray() 함수는 지정된 Delim 구획 문자를 사용하여 문자열을 문자열 배열의 요소로 분해한 다음, 결과 배열을 Pieces 에다 할당합니다. bCullEmpty (공백 쳐내기여부)가 참이면, 구획 문자가 바로 연속해서 나타날 경우에 보통 만들어 지는 빈 요소를 배열에 추가하지 않습니다.

예제:

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

SplitString

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

SplitString() 함수는 ParseStringIntoArray() 함수를 사용하여 문자열의 배열에다 문자열을 분할해 넣을 때 쓰는 감싸개 함수입니다. 유일한 실제 차이점이라면, SplitString() 함수의 반환값이 out 파라미터가 아닌 배열이라는 점입니다.

예제:

SplitString("Deck,Necropolis,,Sandstorm,Sanctuary", ",", false); // {Deck, Necropolis, , Sanstorm, Sanctuary} 배열 반환
ParseStringIntoArray("Deck,Necropolis,,Sandstorm, Maps, ",", false); // 맵에 {Deck, Necropolis, , Sanstorm, Sanctuary} 포함

액터 함수


ReplaceText

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

ReplaceText() 함수는 결과값이 입력 문자열 Str 에 할당된다는 점만 빼고는 Repl() 함수와 같습니다.

예제:

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

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

GetItemName

String GetItemName( string FullName )

GetItemName() 함수는 "Package.Item" 문자열을 받은 다음 그 "Item" 부분을 반환합니다.

예제:

GetItemName(string(self)); // 클래스명 반환
GetItemName("Package.Group.bla.Item"); // "Item" 반환

특수 고려사항


문자열 합쳐 할당하기

이런 스크립트 코드를 자주 보시게 될 겁니다:

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

현재 문자열을 합쳐 할당하는 기능을 하는 문자열 연산자는 둘 있습니다:

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];
}

$= 연산자가 빠른 이유는 이렇습니다!

각 버전에 대해 실제로 벌어지는 일은 이렇습니다:

MyString = MyString + NextArrayValue[i];

  1. 왼쪽을 평가합니다; MyString 변수의 주소를 찾아봅니다.
  2. 오른쪽을 평가합니다; + 연산자를 인보크합니다. (execString_Concat)
  3. MyString 변수의 주소를 찾아봅니다; 그 값을 + 연산자와 사용하기 위해 임시 버퍼에 복사해 넣습니다.
  4. NextArrayValue (execArrayElement) 의 주소를 찾아봅니다; 그 값을 + 연산자와 사용하기 위해 임시 버퍼에 복사해 넣습니다.
  5. 두 임시 버퍼의 내용을 합치고; 그 문자열을 MyString 으로 복사합니다.

MyString $= NextArrayValue[i];

  1. MyString 변수의 주소를 찾아봅니다.
  2. NextArrayValue[i] 변수의 주소를 찾아봅니다. 값을 바로 MyString 에다 덧붙입니다.