2014-02-19 125 views
-1

我从用户输入是在以下格式的字符串:这些是什么以及如何使用Ruby删除它们?

"foo\U+FFE2\U+FFB5\U+FFE2\U+FFB5" 

当我认为这是不显示在浏览器或终端东西,但他们肯定是有。

他们是什么,我如何删除所有像这样的垃圾字符结果只是'富'?

我知道我可以只删除这些特定的,但也可能有其他不同的那些,我只想从中获取文本值。

任何想法?

+1

([U + FFE2](http://www.fileformat.info/info/unicode/char/ffe2/index.htm),[U + FFB5](http://www.fileformat.info/info/unicode/) char/ffb5/index.htm)) –

+3

你不处理/期待unicode? “U + FFB5”是韩文字母,对你来说可能看起来像垃圾,但整个国家都会对此表示担忧。 – Mark

+0

互联网不再仅仅基于ASCII,Win-1252,ISO-8859-1或拉丁字符集。除非您有特定的要求限制您的输入,否则您需要准备好处理UTF-8和任何其他Unicode集。否则,您需要指定* ONLY *支持某些字符集或语言。这是一个人性化的界面。 –

回答

1

我看到的两个主要变体:

  1. #split/#join对:

    "fooффф".split('').select{|x|x.ord <= 127}.join 
    # => "foo" 
    
  2. #unpack/#pack对:

    "fooффф".unpack('U*').select{|x| x <= 127}.pack('U*') 
    # => "foo" 
    
相关问题