Lina9494
Ответ на вопрос на форуме: http://javascript.ru/forum/misc/50669-rabota-s-tekstom.html
by Alexey Demin
HTML
<fieldset>
<legend>Task of Lina9494</legend>
<table border="0" cellpadding="2" cellspacing="0">
<tr>
<th><label for="text">Text</label></th>
<td><textarea cols="50" rows="10" id="text" required></textarea></td>
</tr>
<tr>
<th><label for="maxTextLen">Max. text length</label></th>
<td><input type="number" min="1" max="200" id="maxTextLen" value="80" required /></td>
</tr>
<tr>
<th><label for="maxLineLen">Max. line length</label></th>
<td><input type="number" min="1" max="200" id="maxLineLen" value="50" required /></td>
</tr>
<tr>
<th><label for="maxWordLen">Max. word length</label></th>
<td><input type="number" min="1" max="200" id="maxWordLen" value="10" required /></td>
</tr>
<tr>
<th><label for="symbol">Symbol</label></th>
<td><input type="text" id="symbol" value="a" required /></td>
</tr>
<tr>
<th><label for="result">Result</label></th>
<td><textarea cols="50" rows="10" id="output"></textarea></td>
</tr>
<tr>
<td> </td>
<td><button id="run">Run</button></td>
</tr>
</table>
</fieldset>
CSS
* {
font-family: monospace;
}
th {
text-align: left;
vertical-align: top;
}
JavaScript
$("#run").click(function(e){
var text = $("#text").val(),
maxTextLen = parseInt($("#maxTextLen").val(), 10),
maxLineLen = parseInt($("#maxLineLen").val(), 10),
maxWordLen = parseInt($("#maxWordLen").val(), 10),
symbol = $("#symbol").val(),
output = "",
re = /[а-я]+/gi,
words,
founds = [],
lines,
match;
// clear old output
$("#output").val("");
if(text.length < 0){
$("#output").val("Текст недоступен!");
return false;
}
if(text.length > maxTextLen){
$("#output").val("Длинна текста больше "+maxTextLen+" символов!");
return false;
}
if(text.substr(-1) != "."){
$("#output").val("Текст должен заканчиваться точкой!");
return false;
}
if(symbol.length < 1){
$("#output").val("Искомый символ должен присутствовать!");
return false;
}
lines = text.split("\n");
for(var i = 0; i < lines.length; i++){
if(lines[i].length <= maxLineLen){
words = [];
while(match = re.exec(lines[i])){
words.push(match[0]);
}
for(var i2 = 0; i2 < words.length; i2++){
if(words[i2].charAt(0) != symbol && words[i2].length <= maxWordLen && words[i2].indexOf(symbol) != -1){
founds.push(words[i2]);
}
}
} else {
output += "Превышено максимально возможное количество символов в "+(i+1)+" строке\n";
}
}
output += "Найдено "+founds.length+" слов/-a в тексте.\n";
if(founds.length > 0){
output += "Найденые слова:\n" + founds.join("\n");
}
$("#output").val(output);
});