Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Объединение строк и присваивание



Split

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

 

Функция Split() развивает строку Text в месте первого вхождения SplitStr и возвращает оставшуюся чатсть строки Text. Если bOmitSplitStr истинно, то подстрока 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, используя разделитель delim и сохраняет результат в строку out_Result. Если значение bIgnoreBlanks истинно, пустые элементы массива 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 и сохраняет результат в массив строк Pieces. Если значение bCullEmpty истинно, то при обнаружении двух разделителей, идущих подряд, пустые элементы в массив не включаются.



Пример:

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(), разбивающей строку на массив элементов. Единственное отличие от функции ParseStringIntoArray() в том, что она возвращает получившийся массив, а не сохраняет его в параметр Pieces.

Пример:

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() похожа на функцию 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];

}

Есть два строковых оператора для выполнения объединения и присваивания строк:

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

  • Оценка левой стороны; поиск адреса переменной MyString.
  • Оценка правой стороны, вызов оператора +(execString_Concat)
  • Поиск адреса переменной MyString; копирование ее значения во временный буфер для использования оператором +.
  • Поиск адреса NextArrayValue (execArrayElement); копирование его значения во временный буфер для использования оператором +.
  • Сложение двух временных буфером вместе; копирование строки в переменную MyString.

MyString $= NextArrayValue[i];

  • Поиск адреса переменной MyString.
  • Поиск адреса переменной NextArrayValue. Его прямое присоединение к MyString.

Данный документ является переводом оригинального документа Strings In UnrealScript.

 


Просмотров 220

Эта страница нарушает авторские права

allrefrs.ru - 2021 год. Все права принадлежат их авторам!