Намного проще работать с вашей строкой напрямую, используя String # gsub , чем разбивать ее на части, работать с каждой частью, а затем снова склеивать все вместе.
def break_camel(str)
str.gsub(/(?=[A-Z])/, ' ')
end
break_camel("camelCasingTest")
#=> "camel Casing Test"
break_camel("CamelCasingTest")
#=> " Camel Casing Test"
Преобразует «позицию нулевой ширины» непосредственно перед каждой заглавной буквой (и после предшествующего символа, если он есть) в пробел. Выражение (?=[A-Z])
называется положительный взгляд .
Если вы не хотите вставлять пробел, если заглавная буква находится в начале строки, измените метод следующим образом .
def break_camel(str)
str.gsub(/(?<=.)(?=[A-Z])/, ' ')
end
break_camel("CamelCasingTest")
#=> "Camel Casing Test"
(?<=.)
- это положительный взгляд за , для которого перед заглавной буквой должен стоять любой символ для сопоставление должно быть сделано.
Другой способ записать это следующим образом.
def break_camel(str)
str.gsub(/(?<=.)([A-Z]))/, ' \1')
end
break_camel("CamelCasingTest")
#=> "Camel Casing Test"
Здесь регулярное выражение соответствует заглавная буква, которая не находится в начале строки и сохраняет ее для захвата группы 1. Затем она заменяется пробелом, за которым следует содержимое группы захвата 1.