我有一个字符串变量,内容如下:
str = "abc�"
如何在Ruby on Rails中检查和删除字符串是否有“ ”符号?
答案 0 :(得分:2)
字符“�”为U+FFFD REPLACEMENT CHARACTER
in Unicode。如果你的字符串字面上包含该字符,那么删除它就像这样简单:
cleaned_string = str.gsub "�", ''
或(假设您要避免在代码中键入文字“�”):
cleaned_string = str.gsub "\ufffd", ''
维基百科对此字符说:
它用于指示系统无法将数据流呈现为正确符号时的问题。
因此,您可能真正的问题是您没有正确处理此字符串的来源 - 很可能这是一个编码问题。例如,如果字符串最初是abcé
,但是在ISO-8859-1编码中,但是某些系统将其解释为UTF-8,则最终字符é
将无效,并且该系统然后可以将其显示为“�”,这是您的程序所看到的。 (维基百科页面有另一个例子。)
如果这是一个编码问题,那么根据这些数据的来源,你可能为时已晚,实际数据可能已经丢失,你可以做的最好的事情就是删除这些字符(或者您可能希望留下它们来表明存在问题的地方)。否则,在将数据读入程序时需要小心,将其作为适当的编码读取,这样数据就不会丢失。
如果角色编码对你来说是全新的,那么开始学习它们的好地方是Joel Spolsky的文章The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。
答案 1 :(得分:0)
(1)当你有
时,你会得到什么?str.inspect
显示?
(2)如果您知道,字符串中允许的字符范围是什么,您可以反过来替换任何不在此范围内的字符。