2010-01-08 3 views
6

자바 스크립트를 사용하여 텍스트 상자에 입력 된 텍스트를 구문 분석하려고합니다. 다양한 사용자 생성 변수를 결합하여 임의의 활동을 생성합니다. 이것은 예제를 보면서 더 이해할 수 있습니다. 몇 가지 입력 예는 다음과 같을 수 있습니다.자바 스크립트로 텍스트 구문 분석하기

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 

파운드 및 기호는 서로 다른 범주를 구분하는 데 사용됩니다.

출력은 그 주어진 입력, 예를 들어 무작위로 결정될 것이다 ". 벅스 식사"

또는 "반지의 제왕 읽기 60 분." 또는 "차고를 30 분 동안 청소하십시오."

이 것이 가능합니까? 꽤 간단해야 할 것 같지만 어디서부터 시작해야할지 모르겠습니다. 어떤 제안?

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

그것은 너무 정교한 아니지만, 작업을 수행에 대해 어떻게

감사합니다,

알버트

+0

구문 분석? 자동 완성과 같은 의미입니까, 아니면 여기에서 요점을 놓치고 있습니까? –

+0

자바 스크립트가 텍스트를 살펴보고 분석 할 때이를 의미합니다. 예를 들어, 변수 ("@"로 지정하면 여기에서 가능한 답변 목록으로 이동합니다. 그 변수, 무작위로 하나를 선택하고 문자열로 전체 결과를 반환 – Albert

+0

잘, 여기 좋은 사람들은 이미 행운을 빕니다! –

답변

5

전혀 문제가되지 않습니다. 줄 바꿈 문자를 기반으로 배열로 텍스트 상자 값을 분할하십시오. 그런 다음 배열을 한 번에 하나씩 이동하여 값을 각 섹션의 변수로 정렬합니다. 마지막으로 JavaScript의 난수 생성기를 사용하여 각 그룹 중 어느 것을 선택할지 결정합니다. 값을 HTML 요소에 할당하여 사용자에게 출력합니다.

+0

여러분의 의견과 Mene의 의견 사이에 뭔가 함께 할 수 있다고 생각합니다. 감사합니다. ! – Albert

10

. 시험하지는 않았지만 이런 식으로 작동해야합니다. 이게 작동한다면 재미는 어디 있니? D

+0

감사합니다 - 전혀 재미가 없을 것입니다. 시간이 어지럽 혀지기 시작합니다. – Albert

+2

lines.size는 lines.length이어야합니다. – Samuel

+0

감사합니다. 편집했습니다. – Mene

관련 문제