Работа с текстом
:write:
Всем привет! Есть такое задание: дан исходный текст на русском языке. Длина текста - не более NL символов, длина строки - не более NS символов, длина слова – не более NW символов. Исходный текст должен заканчиваться точкой. Составить процедуру, которая в заданном тексте находит слова, в которые входит заданная буква, но она не является первой буквой слова. В качестве результата вывести исходный текст, найденные слова и их количество. У меня есть код проги, которая в заданном тексте находит слова, в которые НЕ входит заданная буква. Как исправить на нужный вариант , подскажите, пожалуйста :cray: //laba2.3.js var NL=80; var NS=50; var NW=10; var txt="Привет! Как у тебя дела? Где точка? Вот она. \nЭто новая строка! И точка."; var wordFind=[]; var str=txt.split('\n'); var lssn='а'; var wrd=txt.toLowerCase().split(' '); function wordSearch(text,lesson) { var stp=['!','?',',','.']; var i=0,j=0; var countWord=0; while(wrd[i]!=null) { while(j!=4) { if(wrd[i].charAt(wrd[i].length-1)==stp[j]) { wrd[i]=wrd[i].split(stp[j])[0]; } j++; } j=0; i++; } i=0; while(wrd[i]!=null) { if(wrd[i].search(lesson)==-1) { wordFind[countWord]=wrd[i]; countWord++; } i++; } } function check() { var i=0; if(txt.length>NL) { WScript.Echo("Размер текста("+txt.length+" символов) превышает допустимые нормы:"+NL+" символов"); return false; } else { while(str[i]!=null) { if(str[i].length>NS) { WScript.Echo("Размер "+(i+1)+"-ой строки("+str[i].length+" символов) превышает допустимые нормы:"+NS+" символов") return false; } i++; } i=0; while(wrd[i]!=null) { if(wrd[i].length>NW) { WScript.Echo("Размер "+(i+1)+"-го слова("+wrd[i].length+" символов) превышает допустимые нормы:"+NW+" символов") return false; } i++; } return true; } } wordSearch(txt,lssn); if(check()!=false) { WScript.Echo("Исходный текст:\n"+"'"+txt+"'"+"\nНайденные слова,не содержащие "+lssn+":"+wordFind+"\nКоличество слов:"+wordFind.length ); } |
Здравствуйте.
Использование регулярных выражений запрещено преподавателем?! На мой взгляд решение поставленной задачи можно организовать проще при их использовании. 1. Проверяем входные данные (общая длина текста, точка в конце текста). 2. Делим текст по переносам строк, т.к. длину строки нужно проверять. 3. В цикле проверяем длину строки. 4. Регулярным выражением выбираем все слова из строки. 5. В цикле проверяем каждое слово (длину, что не начинается на искомую букву, присутствие искомого символа) и при удовлетворении всех условий добавляем в результирующий массив. Если же использование регулярных выражений запрещено, то необходимо будет иметь объект или массив со всеми русскими буквами (т.к. перечисление всех возможных символов не тривиальная задача) и при переборе по символам строки проверять текущий символ на присутствие в массиве или объекте. На JSFiddle набросал небольшой примерчик, как могло бы это выглядеть при использовании RegExp. |
да, спасибо большое, решение уже было найдено :)) :yes:
|
Часовой пояс GMT +3, время: 19:23. |