Сообщение от nerv_
|
думаю, тут в первую очередь важен правильный алгоритм. Те же объекты (регэкспы) по многу раз создавать вовсе не обязательно.
|
Я про тоже думаю.
Сообщение от nerv_
|
Насчет сложности. Думаю, если вы посмотрите реализацию на mdsn и mdn нужных вам инструментов (функций), то сами разберетесь.
|
Обязательно посмотрю на msdn и mdn. Спасибо.
Сообщение от nerv_
|
Еще можете привести пример
|
function trim( str, charlist ) {
// Strip whitespace (or other characters) from the beginning and end of a string
//
// + original by: Kevin van Zonneveld ([url]http://kevin.vanzonneveld.net[/url])
// + improved by: mdsjack ([url]http://www.mdsjack.bo.it[/url])
// + improved by: Alexander Ermolaev ([url]http://snippets.dzone.com/user/AlexanderErmolaev[/url])
// + input by: Erkekjetter
// + improved by: Kevin van Zonneveld ([url]http://kevin.vanzonneveld.net[/url])
charlist = !charlist ? ' \\s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
return str.replace(re, '');
}
function parser() {
var text=document.getElementById("in").value;
var out=document.getElementById("out");
var re0=/\n/;
text=text.split(re0);
for(var i in text) {
var re1 = /\.|\?|\!/;
text[i]=text[i].split(re1);
for(var j in text[i]) {
text1=trim(text[i][j]);
var re2 = /\,|\:|\—|\;/;
text[i][j]=text[i][j].split(re2);
for(var k in text[i][j]){
text[i][j][k] = trim(text[i][j][k]);
var re3 = /\s{1,}/;
text[i][j][k] = text[i][j][k].split(re3);
if (text[i][j][k][2])
out.value+='В абзаце '+i+' в предложении '+j+'\n'+
'\"'+text1+'\"\nв части '+ k +' есть третье слово: '+text[i][j][k][2]+'\n\n';
}
}
}
}
<input type="button" onclick="parser()" value="Парсим!"/>
<textarea id="in"></textarea>
<textarea id="out"></textarea>
Это простой вариант. Кавычки и прямую речь не учитываем. Что делает? Разбивает текст на абзацы, абзацы на предложения, предложения на части. В каждой части вырезает третье слово. Показывает/запоминает номер абзаца, номер строки, номер части, начиная с нуля. На тексте 90 000 слов задумывается (правда, ненадолго). IE6, Хром.
Как можно улучшить алгоритм (хм... в реальности там и регэкспы накручены, но спрашиваю пока про split, поскольку именно его считаю слабым местом)?
Или всё-таки лучше будет сделать автомат? Сейчас попробую, конечно.