mobipak | Дата: Вторник, 27 Августа 2013, 08:29 | Сообщение # 1 |
Подрывник
Сейчас нет на сайте
| Я создаю программу, которая бы проверяла жесткое соответстие с начала до конца текста.
Тоесть вот так:
Задан некий текст, например abcabcabcabc. Сначала программа берет первый символ a, но натыкается на другой символ, потом ab, натыкается на ca, переходит дальше: берет уже три символа abc, потом продолжает дальше, и так до конца. Было соответствие от начала до конца - программа выводит win. (true == win) Собственно, код программы:Код var yes = 0;
for(i==0;i++1;i != math.round((textn.length)/2) && yes == 0){
var ic = textn.substring(1,i); // Переменная textn - это text, введенный в textarea
var check = textn.replace(/[ic]?/i,) // По идее, должна удалить найденный текст
if(check.length == 0){yes = 1}; // Проверяем, все ли заменено и если да, то останавливаем цикл выставлением переменной -> нарушаем правильность условия
} // Если нет, то цикл продолжит повторяться.
// Вывод текста // Проверка условий
if(yes == 1){document.write('Программа нашла соответствие!')};
if(i == math.round((textn.length)/2) && yes == 0){document.write('Совпадений не найдено.')}; Всю ответственность по разнюхиванию берет на себя регэксп /[ic]?/i, он-то и вызывает много вопросов.
Как сделать так, чтобы регэксп не интерпретировался как текст или служебный символ, а именно как переменная?
Добавлено (27.08.2013, 08:29) --------------------------------------------- Нашел решение проблемы. Походу, так и надо. Код new RegExp ([ic]?,'m') Код var yes = 0;
for(i=0;i++;i != math.round((textn.length)/2) && yes == 0){
var ic = textn.substring(1,i); // Переменная textn - это text, введенный в textarea
var cor2 = new RegExp ([ic]?,'m') var check = textn.replace(cor2,) // По идее, должна удалить найденный текст
if(check.length == 0){yes = 1}; // Проверяем, все ли заменено и если да, то останавливаем цикл выставлением переменной -> нарушаем правильность условия
} // Если нет, то цикл продолжит повторяться.
// Вывод текста // Проверка условий
if(yes == 1){document.write('Программа нашла соответствие!')};
if(i == math.round((textn.length)/2) && yes == 0){document.write('Совпадений не найдено.')}; Алсо, нужно экранировать обратные слеши, если они вдруг попадутся. Сейчас надо подумать, вроде бы как через тот же replace... Алсо2, исправлено неправильное представление инкремента.
Сообщение отредактировал mobipak - Вторник, 27 Августа 2013, 08:31 |
|
| |