Как осуществить регистронезависимый поиск слова (задается в переменной) в string с возможностью задать начало поиска?
Задача переставлять каретку в ‹textarea› в зависимости от ключевого слова(задается переменной). В исходном тексте регистр важен, поэтому его всего нельзя перевести в определенный регистр.
Для этой задачи извлекаю string, использую метод toLowerCase(), ищу индекс с помощью indexOf() и использую полученный результат. Но проблема в том, что метод toLowerCase() заменяет несколько пробелов подряд одним, и индекс в string не соответствует индексу в исходном тексте.
Метод Search() нельзя использовать, т.к. нужна возможность задачи начала поиска ключевого слова.
IndexOf() с регулярным выражением /i вроде как нельзя использовать :(, да и в такой конструкции не получается использовать переменную, вместо слова в кавычках.
Что делать?
Может быть, есть способ сохранить пробелы при данном алгоритме?
Может, можно использовать indexOf() с /i и ключевым словом, заданным в виде переменной?
Может, можно как-то задать начало поиска с search() и при этом использовать /i и ключевое слово, заданное в виде переменной?
Еще какие-нибудь решения?
и правда. а как так получается? я пробовала из разных браузеров на w3schools использовать метод с многими побелами, и все убиралось. в чем разница? вроде одно и то же делаем..
@gereedschapskist уберите из кода там toLowerCase() и убедитесь, что пробелы и без него пропадают. Значит этот метод тут ни при чем. Все дело в том, что на w3schools код находится в html, а там браузеры сами режут несколько пробелов подряд в один (иначе бы можно было ими сделать отступы как в Ворде), а на jsfiddle код обернут в теги pre, которые сохраняют исходное форматирование. Попробуйте по вашей ссылке заменить теги на и будет то же самое.
все. вопрос снят. я даже не подумала поверить длину строк! проблема, значит, в другом. видимо, при выводи в innerHTML побелы убираются :/, и меня это запутало.
спасибо!
@gereedschapskist они не убираются, но визуально их нет. Нажмите F12 и найдите тег с текстом - они там будут ;-) Можете сами попробовать написать тег, скажем, <p>my_____text</p> (вместо _ поставьте знак пробела), и увидите, что пробел всего один.