String/ru

From Second Life Wiki
Jump to navigation Jump to search

См. также Text.

Строка текстовых данных.

Строковые значения заключаются в двойные кавычки при определен в тексте LSL

Любой символ можно использовать в строке, за исключением "NUL" характер, хотя некоторые должны быть экранированы (см. Escape Codes section. На этой странице для получения дополнительной информации) "NUL" символ Unicode U+0000 значение и не может существовать в строку LSL. Поэтому например llUnescapeURL ("%00") приводит к пустая строка "".

Длина строки ограничена только доступны script memory. (См. String Length Restraints. Раздел на этой странице, некоторые оперативные ограничения) Но отметим, что в Mono, строк используется UTF-16 и занимают две памяти байта на символ.

Строки могут быть объединены с помощью + оператора. Обратите внимание, что объединение не может быть сделано при определении строки как глобальная переменная, а + рассматривается как исполняемые инструкции, она не обрабатывается компилятором. Объединение может быть сделано только в исполняемый код, то есть внутри пользовательской функции или в событии.

Некоторые операции со строками можно сделать с помощью встроенных функций, таких, как те, которые могут все сделать текст верхнего и нижнего регистра. Другие операции, такие как replace, left, right, wrap и т.п. должно быть сделано с помощью функции изобретены другими пользователями LSL (примеры которых находятся в нижней части этой страницы.)

Вы не имеете никакого контроля над шрифт, размер, вес или цвет, который Выходная строка отображается в пользователя на экраны или в меню. Внешний вид текста, отображаемого на экранах, таких как чат из текстового, контролируется пользователей (хотя и не много изменений по умолчанию.) Можно управлять только ли текст строчной или прописной.

(Единственный раз, у вас есть контроль над цветом отображается текст если есть Floating Text.)


Примеры строк: <lsl>"Hello Avatar!" "Yes" "No" "It's 10 o'clock." "I am 21 years old!" "Help " + "me" EOF

//Следующие две строки имеют одинаковое значение (то есть они оба производят с текстом строк в нем.)

"I scream,\nyou scream,\nwe all scream,\nfor ice-cream!" "I scream, you scream, we all scream, for ice-cream!" </lsl>


Variable: string name;

<lsl>string name;</lsl> Declares a variable of type string named name, with the value ""

• variable name variable name

Variable: string name = value;

<lsl>string name = value;</lsl> Declares a variable of type string named name, with the value value.

• variable name variable name
• expression value string expression or constant

Typecast: (string)value

<lsl>(string)value</lsl> Converts value to a value of type string.

• expression value expression or constant

Operators

See Operators for more information.

Combine: value1 + value2

<lsl>(value1 + value2)</lsl> Combines two strings into a single string without modifying the inputs. Appends value2 to value1 and returns the resulting string.

• expression value1 string expression or constant
• expression value2 string expression or constant

Comparison: value1 == value2

<lsl>(value1 == value2)</lsl> Compares two strings, returns one if same length and same characters, else returns zero. This operator works exactly like !strcmp(value1, value2) in C, thus technically differs from the counterintuitive behavior of the == operator in C and in Java.

• expression value1 string expression or constant
• expression value2 string expression or constant

Comparison: value1 != value2

<lsl>(value1 != value2)</lsl> Compares two strings, returns zero if same length and same characters, otherwise non-zero. This operator works exactly like strcmp(value1, value2) in C, thus technically differs from the counterintuitive behavior of the != operator in C and in Java.

• expression value1 string expression or constant
• expression value2 string expression or constant

Escape Codes

Функции Цель
\t four spaces
\n new line
\" double quote
\\ backslash

Escape коды преобразование происходит в момент компиляции сценария, а не во время его работы. Компилятор будет игнорировать любую другую комбинацию \ с символ, удалив \. Таким образом, "\a" означает "a". Результатом является то, что только строки, которые находятся внутри вашего скрипта при его компиляции получит, скажем, \n, превратился в символ "новой линии". Текст, чтения из NoteCard, чат, HTTP, название или описание объекта, и т.д., не будут проверяться Управляющие коды, -- что же \n набрал в NoteCard автоматически не превратится в символ «новой линии». Вам придется сделать это самостоятельно, если уж очень нужно по каким-то причинам.

Те, кто приходят к LSL из таких языков, как C и Java могут найти эти строки LSL побег правила запутанным на первый. В LSL, "\n" означает llUnescapeURL("%0A"), как и в C и Java, а "\t" означает llUnescapeURL("%20%20%20%20"), а не llUnescapeURL("%09"). Кроме того нет "\r" управляющий код и "\r" будет перевести на "\r", а не llUnescapeURL("%0D").

Для выполнения перевода escape символов попробовать функцию пользователя Unescape.

Символы с акцентами

Раньше считалось, что ваш сценарий не были бы учтены, если вы включены в строку, содержащую символ с акцентом, например, "écoutez" и знаки препинания не используется в английском языке, например, "¿Entiende?».

Где-то в конце весны / начале лета 2008 года, начал составлять скрипты с акцентами в текстовых строках.

То есть:

<lsl>string hello = "Avatar écoutez";</lsl>

Ограничения длины строки

Как было отмечено в начале этой страницы, длина одной строки ограничена только в наличии script memory. Тем не менее, есть некоторые эксплуатационные ограничения. Многие Communications функций и некоторые другие функции также наложить ограничения на входные строки. Эти ограничения могут привести сообщения об ошибках во время выполнения или "тихая" усечение (т.е. вы не получаете уведомления об ошибке, ни признаков того, что это было сделано.).

Примеры

  • llSay - При использовании llSay, любую текстовую строку, как говорится будет усечен до 1024 символов, как по LSO и Mono. (Это 2048 байт памяти в Mono (UTF-16)).
  • LlGetNotecardLine - При чтении в строках из Notecards, линии длиной более 255 символов будут сокращены молча.
  • LlDialog - Если сообщение кнопки или тексты слишком длинные, не фатальная ошибка возникает при вызове функции.

Примечание
Ограничения этого типа всегда документированы, отсутствия лимитов в документации не означает, что никаких известных пределов (которые находятся за пределами нормы языка).

Обрезка строки

Обрезка строку, используемую для требуют созданные пользователем функции, такие как те, которые создаются с целью в библиотеке Раздор Онидзука (Strife Onizuka) автора.

Теперь, однако, есть собственная функция LSL, llStringTrim, которая может быть использована для удаления ведущих и / или конечных пробелов. Заметим, однако, что она не удаляет избыточные пространства, которое пользователь может попасть в середине предложения или строка, и нет никаких других функций родного LSL который делает.

Следующий код будет удалить оба все двойные пробелы внутри строки, а также любые начальные и конечные пробелы, он будет как никогда требуют значительного объема памяти, накладные расходы.

<lsl>string myTrimmedText = llDumpList2String(llParseString2List(src, [" "], []), " ");</lsl>

При приеме пользовательского ввода текста из чата, NoteCard или Prim название или описание, или любой другой "свободного хода" источник, это хорошая идея, чтобы всегда llStringTrim первого до начала работы с ним.

Примеры

<lsl>integer int = 48934; string str = (string)int; string str_2; str_2 = str;</lsl>

Полезные функции

Созданные пользоваетем полезные функции

Эти функции были созданы и предоставлены пользователям LSL для выполнения операций не распространяется встроенный LSL функций.


function purpose
Chr Возвращает Unicode символ с данным кодом. См. также Ord.
Float2String Позволяет Выходная строка из поплавка в аккуратные текстовый формат, с возможностью округления.
Left Возврат текста осталось от указанного сепаратора.
Like Смотрите, если одно слово соответствует части другого.
Ord Возвращает порядковое (Unicode код) характер. См. также Chr.
RandomString Создает случайной строки.
RemoveHTMLTags Удаляет HTML-теги из строки (и символы новой строки)
Right возвращает текст праве указанный разделитель.
str_replace заменить все вхождения строки другой строки в строку.
Stristr Возвращает строку из первого вхождения иглы до конца стогу.
SplitLine вставка escape 'new line' кодов в определенных позициях строки.
WrapText Прерывает текст в соответствие длины вашей спецификации.

Текст-документы из библиотеки скриптов

Name Creator Description
ParseString2List Strife Onizuka То же, что llParseString2List и llParseStringKeepNulls, но не ограничены 8 прокладками или сепараторов. Таким образом заменить вызов llParseString2List и llParseStringKeepNulls функций с помощью вызова ParseString2List всякий раз, когда у вас есть более чем на 8 сепараторов или более 8 распорки.
String Compare Xaviar Czervik Сравнивает две строки и надежно возвращает либо 1, -1 или 0, если они такие же.
XyText Xylor Baysklef Текстовый дисплей (до 10 символов) на прим. Используйте столько примы как хотелось бы.
XyyyyzText Criz Collins Текстовый дисплей (до 10 символов) на прим. Отображает различные текст для каждой строки, а не единый текст, который будет разбит на следующие строки. Смотреть здесь, что это значит: http://screencast.com/t/1wMLujLcEO
XyzzyText Thraxis Epsilon and Gigs Taggart Текстовый дисплей (до 10 символов) на примы. Путь, более эффективны, чем XyText.