Обработка строки по словам
Здравствуйте. Я получил данные из многострочного textField. Можно теперь как-нибудь обработать каждое слово в получившейся строке?
Есть словарь зарезервированных слов, и вот нужно заменить в textField все вхождения слов из словаря на их же, но только в верхнем регистре, а остальные оставить/отредактировать в нижнем регистре. Пробовал через регулярные выражения, но помойму это не то, нужно ведь смотреть, есть ли слово в словаре и заменять или на верхний регистр или на нижний. Спасибо! |
Можно и регулярными выражениями, но насколько это будет производительно - надо проверять.
// произведет замену только для "целых" 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')); |
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')); |
Aetae, согласен. Это был всего лишь пример навскидку, требующий оптимизации. Что Вы и сделали весьма элегантно.
|
Часовой пояс GMT +3, время: 14:06. |