#javascript
Есть некоторая строка, которую нужно проверять на наличие в ней знака тире "-" и
если этот знак есть тогда следующую букву после тире нужно сделать большой, ну а остальные
далее идущие оставить как есть. Как это можно реализовать на JS ?
Например:
var str = "привет-стрАна"
Должно стать "привет-СтрАна"
Ответы
Ответ 1
Можно воспользоваться заменой по регулярному выражению /-\w/g Важно: данное выражение заменит только английские буквы. console.log("hello-worLd".replace(/-\w/g, $0 => $0.toUpperCase())); console.log("hello-worLd-cebab".replace(/-\w/g, $0 => $0.toUpperCase())); Для русских нужно добавить перечисление алфавита и не забыть букву ё, например так: console.log("привет-стрАна".replace(/-[а-яё]/g, $0 => $0.toUpperCase())); console.log("привет-стрАна-кебаб".replace(/-[а-яё]/g, $0 => $0.toUpperCase())); Чтобы и русский и английский console.log("привет-worLd-стрАна".replace(/-[a-zа-яё]/g, $0 => $0.toUpperCase())); console.log("привет-worLd-стрАна-cebab-кебаб".replace(/-[a-zа-яё]/g, $0 => $0.toUpperCase()));Ответ 2
var str = "-приВет-мИр-раЗ-два-ТРИ-heLlo-woRld-one-twO-THREE"; var i = -1; while ((i = str.indexOf('-', i+1)) != -1) { str = str.substr(0, i+1) + str[i+1].toUpperCase() + str.substr(i+2); } console.log(str); В условии цикла мы присваиваем переменной i положение символа '-' в строке, начиная поиск с (i+1)-ого символа, то есть каждый раз будет рассматриваться новое тире. Заметьте, что изначально мы присвоили переменной i значение -1, что бы в первый раз поиск шёл с нулевого символа. В теле цикла происходит замена символов на позиции i+1 (то есть следующих после каждого тире) на соответствующие им заглавные с помощью .toUpperCase() Так будет продолжаться, пока функция не вернёт -1, то есть пока мы не рассмотрим все тире.
Комментариев нет:
Отправить комментарий