我有很多字符串,我需要將'TM','(c)'等從字符串中刪除。這些標記是unicode。現在我只想把所有的unicode都拉出來,一旦我得到了這個工作,我會更有選擇性,並且只是取消法律標記。下面的代碼:從字符串中可靠地刪除unicode的最佳方法是什麼
strings = ['Star Wars \u2122 2', 'Empire Strikes Back\u00C2\u00AE The Strikening',
"Star Wars\u2122 2", "Empire Strikes Back\u00C2\\u00AE The Strikening"]
p strings.inspect
strings.each { |str|
sub = str.gsub(/\\(u[(\d)a-fA-F]{4})/, "")
p sub
}
結果:
["Star Wars \\u2122 2", "Empire Strikes Back\\u00C2\\u00AE The Strikening", "Star Wars\u2122 2", "Empire Strikes Back\u00C2\\u00AE The Strikening"]
"Star Wars 2"
"Empire Strikes Back The Strikening"
"Star Wars\u2122 2"
"Empire Strikes Back\u00C2 The Strikening"
Works的單引號,而不是增加一倍。我知道單引號字符串的行爲與雙引號字符串不同。這裏的問題是被饋入這個函數的字符串表現爲雙引號字符串並且破壞了代碼(替代不會發生)。我嘗試在gsub之前添加sub('\\', '\\\\')
,但那並未解決問題。
我想我誤解了Ruby中的字符串行爲。如何可靠地從"Star Wars\u2122 2"
中刪除unicode符號?我擁有的正則表達式並沒有這樣做。
的Ruby 1.9.3
也沒有。我只需要拉出物品的名稱,並不在乎它們是否註冊了商標等。雖然如此,謝謝。 – jcollum
啊,好的。我懂了。在這種情況下,最好不要去除非ASCII字符,只刪除不需要的字符。 –