Ruby 使用正则表达式将数字更改为字符
我正在尝试将字符串转换为在单词之间包含连字符(-),并更改为小写。例如:Ruby 使用正则表达式将数字更改为字符,ruby,regex,string,Ruby,Regex,String,我正在尝试将字符串转换为在单词之间包含连字符(-),并更改为小写。例如: 从'ThisIsMyString'到'this-is-my-string' 这是我目前的代码: def kebabize(str) str.gsub(/(?=[A-Z])/, '-').downcase end 我还需要它从字符串中删除数字。例如: 从“有三个词”到“有三个词” 要做到这一点,我需要向代码中添加什么?用[A-Z][A-Z]+(?=[A-Z]|\b)来捕获这一点的正则表达式 见: 说明: 阅读以大
- 从
到'ThisIsMyString'
'this-is-my-string'
def kebabize(str)
str.gsub(/(?=[A-Z])/, '-').downcase
end
我还需要它从字符串中删除数字。例如:
- 从
到“有三个词”
“有三个词”
要做到这一点,我需要向代码中添加什么?用[A-Z][A-Z]+(?=[A-Z]|\b)来捕获这一点的正则表达式 见: 说明: 阅读以大写字母([A-Z])开头的“word”,然后是几个小写字母([A-Z]+),直到遇到大写字母[A-Z]或\b为止 在代码中,您省略了边界选项,因为这不需要替换:
def addMinus(str)
str.gsub(/([A-Z][a-z]+(?=[A-Z]))/, "\\1-")
end
print addMinus('ThisIsMyString'), "\n"
只需将另一个
gsub
包裹起来:
def kebabize(str)
str.gsub(/\d+/, '').gsub(/(?=[A-Z])/, '-').downcase
end
同意使用
\d+
删除了我的答案而支持这一个。就像@Jan,即使你比我更欣赏一个不同的解决方案,也没有必要否决一个完美有效的解决方案。如果你这样做了,请告诉我们原因,这样我们都可以从你的观点/知识中受益。