2010-01-08 3 views
6

Я пытаюсь использовать Javascript для анализа текста, который был введен в текстовое поле, которое объединило бы множество пользовательских переменных для создания случайных действий. Это может иметь больше смысла, глядя на пример. Некоторым примером может быть:Анализ текста с помощью 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 минут».

Является ли это выполнимым? Похоже, это должно быть довольно просто, но я не знаю с чего начать. Какие-либо предложения?

Спасибо,

Альберт

+0

Разбор? Вы имеете в виду что-то вроде автозаполнения или мне не хватает здесь точки? –

+0

Я хочу, чтобы javascript просматривал текст и анализировал его по мере его прохождения - например, когда дело доходит до переменной (обозначенной здесь «@», она переходила к списку возможных «ответов» для эту переменную, выберите случайную и верните весь результат в виде строки. – Albert

+0

Я вижу, ну, хорошие ребята здесь уже закодировали материал для вас, удачи! –

ответ

5

Никакой проблемы вообще. Разделите значение текстового поля на массив на основе символов разрыва строки. Затем пройдите через массив по одному элементу за раз, сортируя значения в переменных для каждого раздела. Наконец, используйте генератор случайных чисел JavaScript для случайного определения, какую из каждой группы выбрать. Вывод пользователю, присваивая значение элементу HTML.

+0

Имеет смысл. Между вашим комментарием и Mene's я думаю, что могу что-то собрать. ! – Albert

10

Как насчет:

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

+0

Спасибо, было бы совсем не весело, P Time, чтобы начать беспорядок! – Albert

+2

lines.size должно быть lines.length – Samuel

+0

спасибо, я его отредактировал – Mene

Смежные вопросы