Допустим, у меня есть следующая строка:
"a test-eh'l"
Я хочу использовать заглавные буквы в начале каждого слова. Слово может быть разделено пробелом, апострофом, дефисом, косой чертой, точкой и т. Д. Поэтому я хочу, чтобы строка получилась так:
"A Test-Eh'L"
Я не слишком беспокоюсь о том, чтобы первый символ стал заглавным после вызова gsub, поскольку это легко сделать после факта. Тем не менее, когда я использую IRB и метод сопоставления, я, похоже, получаю только один результат. Когда я использую сканирование, оно собирает совпадения, но проблема в том, что я ничего не могу с этим поделать, так как мне нужно заменить содержимое исходной строки.
Вот что у меня есть:
"a test-eh'a".scan(/[\s|\-|\'][a-z]/)
=> [" t", "-e", "'a"]
"a test-eh'a".match(/[\s|\-|\'][a-z]/)
=> #<MatchData " t">
Тогда, если я попробую шаблон, используя gsub:
"a test-eh'a".gsub(/[\s|\-|\'][a-z]/, $1)
TypeError: can't convert nil into String
В javascript я обычно использовал бы круглые скобки вместо квадратных скобок в передней части. Однако при сканировании я не получал правильных результатов.
"a test-eh'a".scan(/(\s|\-|\')[a-z]/)
=> [[" "], ["-"], ["'"]]
"a test-eh'a".gsub(/(\s|\-|\')[a-z]/, $1)
=> "a'est'h'"
Любая помощь будет оценена.