String/ru
LSL Портал | | | Функции | | | События | | | Типы | | | Константы | | | Потоки | | | Библиотека Скриптов | | | Учебники |
См. также 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. |