正则表达式删除非字母

new*_*_86 17 ruby regex

我正在尝试从字符串中删除非字母.这会这样做:

c = o.replace(o.gsub!(/\W+/, ''))
Run Code Online (Sandbox Code Playgroud)

Cam*_*ron 26

gsub!足够了:

o.gsub!(/\W+/, '')
Run Code Online (Sandbox Code Playgroud)

请注意,gsub!修改原始o对象.此外,如果o不包含任何非单词字符,结果将是nil,因此使用返回值作为修改后的字符串是不可靠的.

你可能想要这个:

c = o.gsub(/\W+/, '')
Run Code Online (Sandbox Code Playgroud)

  • @newbie:`!`版本修改了原文(这就是`!`的意思 - 它是一种"当心,我正在改变你在"标志"上叫我的对象).没有`!`的版本(在我的第二个代码示例中)做了你想要的 - 它不会修改字符串inplace,而是返回一个应用了替换的副本 (3认同)

edm*_*dmz 6

删除任何非字母的内容:

> " sd  190i.2912390123.aaabbcd".gsub(/[^a-zA-Z]/, '')
"sdiaaabbcd"
Run Code Online (Sandbox Code Playgroud)

编辑:正如池上指出,这没有考虑重音字符,变音符号和其他类似的字符.这个问题的解决方案将取决于你究竟指的是"不是一封信".此外,您的输入将是什么.

  • Zsbán和Ævar不同意见. (3认同)