2013-04-07 8 views
0

Я новичок в JavaScript. У меня есть текст с несколькими предложениями, и я хочу, чтобы каждое предложение представляло собой запись в массиве с именем предложения и предупреждения («была сделана новая запись»). Поэтому мне нужно прокручиваться и всякий раз, когда есть «.». начнется новая запись. Но как я могу пройти через текст до конца?JS - пройдите текст, сделайте запись массива после каждого "."

var sentences = [] 
var myText= "I like cars. I like pandas. I like blue. I like music." 
+1

Будет ли ['.split (". ")'] (Https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split) сделать это? – Bergi

+0

Что делать, если 'myText =" Мне нравятся автомобили стоимостью 19000 долларов. Мне нравятся панды ";'? Или 'myText =" Мистеру Брауну нравятся панды. Мне нравится мистер Браун. " –

+0

" * просматривать текст до конца * "- как вы хотите пройти через него, повторить его по характеру или что? – Bergi

ответ

2

Вы можете сделать это путем разделения myText на ". ", а затем обрезки и добавления обратно полную остановку.

jsFiddle

var myText = "I like cars. I like pandas. I like blue. I like music." 
var sentences = myText.split(". "); 
for (var i = 0; i < sentences.length; i++) { 
    if (i != sentences.length - 1) 
     sentences[i] = sentences[i].trim() + "."; 
} 

Расщепление текст на ". ", а не на "." будет означать, что будет работать над предложениями, как "That costs $10.50."

+0

ThankYou очень @ Daniel и благодарю вас за jsFiddle, это прекрасно! – daisy

1

Вы можете использовать split

var myText= "I like cars. I like pandas. I like blue. I like music."; 
var sentences = myText.split("."); 
2

Использование String.charAt(index).

var sentences = [""]; 
var count = 0; 
for(var i = 0; i < myText.length; i++){ 
    var current = myText.charAt(i); 
    sentences[count] += current; 
    if(current == "."){ 
     count++; 
     sentences[count] = ""; 
    } 
} 
+0

Большое спасибо @ Pietu1998! – daisy

1

Хотя @ ответ Pietu1998 показывает вам, как перебрать символов строки, более удобный способ получения массива предложений от такой струны является matching с regular expression:

var myText= "I like cars. I like pandas. I like blue. I like music."; 
var sentences = myText.match(/\S[^.]*\./g) || []; 

Конечно, это просто разбивает строку на каждую точку, в реальной жизни не каждое предложение заканчивается точкой, и не каждая точка заканчивает предложение.

+0

Вы уверены, что он работает? [link] http://jsfiddle.net/N6K6r/2/ – daisy

+0

@daisy: Спасибо за подсказку, я снова забыл набрать повтор '' ': -/ – Bergi

+0

теперь это очень круто, чем @Bergi – daisy