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>&nbsp;</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);
});