Авторизация
×

Логин (e-mail)

Пароль

Интерактивные истории, текстовые игры, квесты и визуальные новеллы
Гиперкнига

Библиотека    Блог

Расширяем возможности макросов с помощью 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.

Профиль


Закрыть

Показать все комментарии

Morych
07.03.13 22:37

Ух-ты, здорово! Сколько же всего можно напридумывать! :)
DoubleDragon
02.04.13 08:10

Теперь в методе replace можно использовать регулярные выражения. Изменения внесены в статью.
Кельта
16.04.13 21:56

Беру на карандаш. Спасибо.

Для того, чтобы оставлять комментарии, необходимо зарегистрироваться и подтвердить в профиле указанный e-mail адрес.

При использовании любых материалов блога обязательно указание ссылки на источник