Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка строки по словам (https://javascript.ru/forum/misc/37941-obrabotka-stroki-po-slovam.html)

Mirach 14.05.2013 23:39

Обработка строки по словам
 
Здравствуйте. Я получил данные из многострочного textField. Можно теперь как-нибудь обработать каждое слово в получившейся строке?
Есть словарь зарезервированных слов, и вот нужно заменить в textField все вхождения слов из словаря на их же, но только в верхнем регистре, а остальные оставить/отредактировать в нижнем регистре.
Пробовал через регулярные выражения, но помойму это не то, нужно ведь смотреть, есть ли слово в словаре и заменять или на верхний регистр или на нижний.
Спасибо!

with-love-from-siberia 15.05.2013 00:49

Можно и регулярными выражениями, но насколько это будет производительно - надо проверять.
// произведет замену только для "целых" abc, def
var s = 'abcdef www def xyz abc klm';
var t = s.replace(/(?:\b(abc|def)\b)|(.+?)/ig, function($0, $1, $2)
{
    return $1 ? $1.toUpperCase() : $2.toLowerCase();
});
alert([s, t].join('\n'));

Aetae 15.05.2013 01:09

with-love-from-siberia, \b работает только с англицким.

var s = 'abcdef www def xyz abc klm';
var words = {
    'www':true,
    'def':true
};
var t = s.replace(/[a-zа-яё]+/ig, function(str)
{
    return words[str] ? str.toUpperCase() : str.toLowerCase();
});
alert([s, t].join('\n'));

with-love-from-siberia 15.05.2013 01:19

Aetae, согласен. Это был всего лишь пример навскидку, требующий оптимизации. Что Вы и сделали весьма элегантно.


Часовой пояс GMT +3, время: 14:06.