2012-02-28 113 views
1

Hallo我想清理来自Ruby的输入,但同时不会弄乱包含外部字符的字符串。 ()。,\').gsub(“”,“”).gsub(“,”,“”)。gsub(()。,'').gsub(“,”,“”).gsub( “'”,“”)。gsub(“_”,“”).gsub(“;”,“”).gsub(“ - ”,“”).gsub(“:”,“”)。gsub “。”,“”).gsub(“?”,“”).gsub(“!”,“”).gsub(“^”,“”)。gsub(“%”,“”).gsub “$”,“”)为红宝石擦亮输入

该字符串需要被除去空格,撇号,除了字母(不知道数字)以外的所有东西,除了被消毒。我不确定我是否忘记了一些东西,而且可能是多余的。

只要字符串不包含无害的非英文字符,例如重音字母,我希望它处理但我们的代码会破坏我的代码。我的猜测是,他们被转换为%25和所有的东西,然后他们休息。事实上,即使我根本没有消毒,它也会崩溃。我怎样才能让Ruby正确处理非英文字符?万分感谢。

+0

试过这个http://ruby-unicode.rubyforge.org/doc/? – Candide 2012-02-28 13:44:18

回答

2

这样;

" ' ; te st".gsub(/\W+/, "") # "test" 
+1

非常感谢您提供非常有帮助的答案,我会在信誉允许的情况下加注。我想问,你能比较这两个吗? .gsub(/ \ W + /,“”)和.gsub(/ <(.|\n)*?> /,'')是否相同?再次感谢 – user1237870 2012-02-29 11:05:20

+0

你可以从[rubular](http://rubular.com)检查你的ruby regexp。 – 2012-02-29 12:24:58