Интерактивные истории, текстовые игры и квесты
Регистрация / Вход
Посетите наш новый сайт AXMAJS.RU
Расширяем возможности макросов с помощью Javascript. Часть 1-я
DoubleDragon, 07.03.13 | Маленькие хитрости
Не секрет, что «под капотом» HTML-файлов, которые генерирует AXMA Story Maker, помимо самого кода HTML находится код языка Javascript, который, по сути, и является «движком» готовых произведений. Несмотря на это, в процессе написания истории Вы никак не сталкиваетесь с Javascript, что значительно упрощает рабочий процесс. Однако Вы можете использовать некоторые методы Javasript для получения дополнительных возможностей в макросах. В этот раз я расскажу Вам о методах, которые работают со строковыми объектами. Строковыми объектами являются те объекты, значения которых представляют собой текст и заключены в кавычки. Например:<<set $объект = "Абракадабра">>
Отмечу, что все методы, которые будут описаны ниже, работают только в следующих макросах: <<set>>, <<if>>, <<elseif>> и <<print>>.
Я буду приводить примеры методов, используя макрос <<print>>, но только из-за того, что им удобно контролировать итоговый результат. В начале примера будет идти код, а потом жирным шрифтом — результат, который будет выведен на экран.
Обратите внимание, что названия методов чувствительны к регистру (то есть к строчным и заглавным буквам) и в случае ошибки в написании, работать не будут.
Методы используются так:
$имя_объекта.метод
Поехали!
Метод toLowerCase()
Преобразует строку в нижний регистр. Пример<<set $объект = "Абракадабра">>
<<print $объект.toLowerCase()>>
абракадабра
Метод toUpperCase()
Преобразует строку в верхний регистр. Пример<<set $объект = "Абракадабра">>
<<print $объект.toUpperCase()>>
АБРАКАДАБРА
Метод charAt(n)
Возвращает n-й символ строки. Символы идут слева направо. Первый символ имеет позицию 0, а последний — длина строки минус 1. Если n лежит за пределами строки, то результатом будет пустая строка. Пример<<set $объект = "Абракадабра">>
<<print $объект.charAt(2)>>
р
Метод substr(i,n)
Возвращает подстроку, начиная с позиции i и длиной n символов. Первый символ имеет позицию 0. Если i больше или равно длине строки или n<=0, то возвращается пустая строка. Если i<0, то позиция определяется с конца строки. Если параметр n не указан, то подстрока берётся до конца строки. Пример<<set $объект = "Абракадабра">>
<<print $объект.substr(1,4)>>
брак
или
<<set $объект = "Абракадабра">>
<<print $объект.substr(-3)>>
бра
Метод indexOf ("s")
Поиск подстроки "s" в указанной строке. Результатом будет первая найденная позиция подстроки "s" либо -1, если подстрока "s" не найдена. Позиции отсчитываются начиная с 0, т. е. первая будет равна 0, вторая 1 и т. д. Поиск чувствителен к регистру. Пример <<set $объект = "Абракадабра">>
<<print $объект.indexOf("рак")>>
2
Метод replace("s1","s2")
Поиск и замена первого совпадения в строке. Возвращает строку, в которой подстрока "s1" заменена на подстроку "s2". Поиск чувствителен к регистру. Если подстрока "s1" не найдена, то будет возвращена исходная строка. Пример<<set $объект = "Абракадабра">>
<<print $объект.replace("акадабра","икос")>>
Абрикос
Если Вам необходимо произвести поиск и замену всех совпадений в строке, используйте регулярные выражения:
<<set $объект = "Абракадабра">>
<<print $объект.replace(/a/g,"у")>>
Абрукудубру
* * *
Также стоит отметить важное свойство length, которое хоть и не является методом, но очень может пригодиться в работе.Свойство length
Возвращает длину строки. Пример<<set $объект = "Абракадабра">>
<<print $объект.length>>
11
Осталось добавить, что весь код, приведённый выше, проверен мною на работоспособность, и Вы смело можете его использовать в своих работах.
А в следующий раз я расскажу Вам про некоторые математические методы, которые можно позаимствовать из Javascript.Комментарии: 6.
Профиль
Закрыть
Показать все комментарии
07.03.13 22:37
Ух-ты, здорово! Сколько же всего можно напридумывать! :)
02.04.13 08:10
Теперь в методе replace можно использовать регулярные выражения. Изменения внесены в статью.
16.04.13 21:56
Беру на карандаш. Спасибо.
Для того, чтобы оставлять комментарии, необходимо зарегистрироваться и подтвердить в профиле указанный
При использовании любых материалов блога обязательно указание ссылки на источник
Великолепно! (Сколько материала для моих новых багов! :-D) ***А если без шуток — большое спасибо!!!