刪除非打破空間我有一個字符串,它看起來像這樣:如何在Ruby中
d = "foo\u00A0\bar"
當我檢查的長度,它說,它是長7個字符。我在網上查了一下,發現這是一個不間斷的空間。有人能告訴我如何刪除字符串中的所有非空白空格嗎?
刪除非打破空間我有一個字符串,它看起來像這樣:如何在Ruby中
d = "foo\u00A0\bar"
當我檢查的長度,它說,它是長7個字符。我在網上查了一下,發現這是一個不間斷的空間。有人能告訴我如何刪除字符串中的所有非空白空格嗎?
irb(main):001:0> d = "foo\u00A0\bar"
=> "foo \bar"
irb(main):002:0> d.gsub("\u00A0", "")
=> "foo\bar"
d.gsub("\u00A0", "")
在Ruby 1.8中不起作用。取而代之的是使用d.gsub(/\302\240/,"")
請參閱http://blog.grayproductions.net/articles/understanding_m17n瞭解有關1.8和1.9之間字符編碼差異的更多信息。
這是一個古老的線程,但也許它有助於某人。 我發現自己正在尋找解決相同問題的方法,當我發現strip沒有完成這項工作時。我用的方法ord
什麼角色是被檢查和使用chr
代表它在gsub
2.2.3 :010 > 160.chr("UTF-8")
=> " "
2.2.3 :011 > 160.chr("UTF-8").strip
=> " "
2.2.3 :012 > nbsp = 160.chr("UTF-8")
=> " "
2.2.3 :013 > nbsp.gsub(160.chr("UTF-8"),"")
=> ""
我不明白爲什麼strip
不刪除的東西,看起來像一個空間給我,讓我檢查here什麼ASCII 160實際上是。
如果你不關心非打破空間具體來說,而是任何「特殊」的Unicode空白可能出現在你的字符串的字符,你可以使用POSIX括號表達式的空格替換:
s.gsub(/[[:space:]]/, '')
這些括號表達式(與\s
等匹配器相對)不僅與ASCII字符匹配,而且與類的所有Unicode字符匹配。
欲瞭解更多詳情,請參閱the ruby documentation
非常有用的,當你有定期的空白加上討厭的HTML`&nbsp`在相同的字符串。 – MatzFan 2017-11-25 20:28:26