[Regexp] Вставка дефисов
От: prima_lux Украина  
Дата: 24.02.10 22:11
Оценка:
Добрый день.
Не могу сообразить какое выражение нужно для такого преобразования:
OneTwoThree в
one-two-three или One-Two-Three (регистр не важен, просто первый вариант красивее)
То есть, если я знаю заранее количество слов, то заменить не проблема. Но слов может быть любое количество, соответственно, ни одного нормального выражения для замены, без дефисов в конце, в голову не приходит.
Re: [Regexp] Вставка дефисов
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 24.02.10 22:22
Оценка: 4 (1)
Здравствуйте, prima_lux, Вы писали:

_>Не могу сообразить какое выражение нужно для такого преобразования:

_>OneTwoThree в
_>one-two-three или One-Two-Three (регистр не важен, просто первый вариант красивее)
_>То есть, если я знаю заранее количество слов, то заменить не проблема. Но слов может быть любое количество, соответственно, ни одного нормального выражения для замены, без дефисов в конце, в голову не приходит.

На Перле я бы написал так:
s/(.)([A-Z])/$1-$2/g;
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: [Regexp] Вставка дефисов
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 24.02.10 22:26
Оценка:
С приведением в нижний регистр несколько сложнее, в одно выражение уложиться сходу не могу. Такой вариант:

s/(.)([A-Z])/$1-\L$2/g;

даёт нижний регистр, но только для тех букв, к которым применялась замена, т.е. первая буква останется заглавной (One-two-three). Наверное, можно как-то извратиться, но раз регистр не важен…
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[3]: [Regexp] Вставка дефисов
От: prima_lux Украина  
Дата: 24.02.10 22:34
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

спасибо, я как-то не подумал выделять эти участки
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.