2010-01-08 18 views
6

Estoy tratando de usar Javascript para analizar el texto que se ha ingresado en un cuadro de texto, que combinaría una variedad de variables generadas por el usuario para crear actividades aleatorias. Esto podría tener más sentido si miramos el ejemplo. Algunos ejemplos de entrada pueden ser:Analizando texto con 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 

Libra/y los signos se utilizarán para separar las diferentes categorías.

La salida sería entonces ser determinado al azar de la entrada dada, por ejemplo: "Comer en Starbucks"

o "Leer Señor de los anillos durante 60 minutos." o "Limpie el garaje durante 30 minutos".

¿Es esto factible? Parece que debería ser bastante sencillo, pero no sé por dónde empezar. ¿Alguna sugerencia?

Gracias,

Albert

+0

¿Analizando? ¿Quieres decir algo como autocompletar o me falta el punto aquí? –

+0

Quiero decir para que el javascript mire a través del texto y lo analice a medida que avanza; por ejemplo, cuando se trata de una variable (que aquí se designa con "@", salta a la lista de posibles "respuestas" para esa variable, seleccione una aleatoria, y devuelva el resultado completo como una cadena. – Albert

+0

Veo, bueno, los buenos aquí ya codificaron cosas para ustedes, ¡buena suerte! –

Respuesta

5

No hay problema. Divida el valor del cuadro de texto en una matriz basada en caracteres de salto de línea. Luego, examine la matriz un elemento a la vez, clasificando los valores en variables para cada sección. Finalmente, use el generador de números aleatorios de JavaScript para determinar al azar cuál de cada grupo seleccionar. Salida al usuario asignando el valor a un elemento HTML.

+0

Tiene sentido. Entre su comentario y Mene's creo que puedo armar algo juntos. Gracias ! – Albert

10

¿Qué tal:

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); 
    } 
} 

no es demasiado sofisticado, pero hace el trabajo. Aunque no lo probé, algo así debería funcionar. ¿Y dónde está la diversión si esto simplemente funcionara? D

+0

Gracias - no sería nada divertido; P ¡Es hora de empezar a jugar! – Albert

+2

lines.size debería ser lines.length – Samuel

+0

gracias, lo he editado – Mene

Cuestiones relacionadas