Я пытаюсь использовать JavaScript для парсинга текста, который был введен в текстовом поле - который объединит множество пользовательских сгенерированных переменных для создания случайных операций. Это могло бы иметь больше смысла, смотрящего на пример. Некоторый вход в качестве примера мог бы быть:
Activity @Home @Out @Home Read @book for @time Clean up @room for @time @Out Eat at at @restaurant @book Enders Game Lord of the Rings @room bedroom garage basement @restaurant Red Robin McDonalds Starbucks @time 15 minutes 30 minutes 45 minutes 60 minutes
Знаки фунта/и использовались бы для разделения различных категорий.
Вывод был бы затем определен случайным образом от данного входа, например:
"Поешьте в Starbucks". или "Властелин колец чтения в течение 60 минут". или "Чистый гараж в течение 30 минут".
Действительно ли это выполнимо? Кажется, что это должно быть довольно просто, но я не знаю, где запустить. Какие-либо предложения?
Спасибо,
Albert
Никаких проблем. Разбиение значения текстового поля на массив на основе символов разрыва строки. Затем по одному элементу массива, сортируя значения по переменным для каждой секции. Наконец, используйте генератор случайных чисел JavaScript, чтобы случайным образом определить, какую из групп выбрать. Выводите значение для пользователя, присваивая его HTML-элементу.
Как насчет:
var myText = ...; // Input text
var lines = myText.split("\n");
var numLines = lines.length;
var i;
var currentSection;
var sections = Array();
var phrases = Array();
// parse phrases
for (i = 0; i < numLines; i++) {
var line = lines[i];
if (line.indexOf('@') == 1) {
// start of e.g. time section, handled in nex loop
break;
} else {
// phrase
phrase.push(line);
}
}
// parse sections
for ( ; i < numLines; i++) {
var line = lines[i];
if (line.indexOf('@') == 1) {
// start of next section, handled in nex loop
currentSection = line;
sections[currentSection] = new Array();
} else {
// add section entry
sections[currentSection].push(line);
}
}
Это не слишком сложно, но делает работу. Хотя не тестировал, но что-то вроде этого должно работать. И где веселье, если бы это просто сработало ;D