ruby - 用 gsub 替换字符串中的字符

标签 ruby encoding utf-8 iso-8859-1 gsub

我在替换 (gsub) 字符串中的特定字符时遇到问题。这是我的字符串:

string = "\n\t Tel.:\xA007031 / 11 11 11"

\xA0 不是我想要的字符,所以我尝试用\x20 替换它(两者都是空白字符)。为此,我对其调用 gsub:

string.gsub(' ', ' ')

当尝试执行此操作时,它会返回“不兼容的编码正则表达式匹配(带有 ISO-8859-1 字符串的 UTF-8 正则表达式)”错误。

任何关于如何解决这个问题的想法将不胜感激!

最佳答案

你可以做到这一点 -

string.force_encoding("ISO-8859-1").gsub(/:./,":") 
#=> "\n\t Tel.:07031 / 11 11 11"

如果您想将其编码为 UTF-8,请执行此操作 -

string.force_encoding("ISO-8859-1").encode!("UTF-8")
#=> "\n\t Tel.: 07031 / 11 11 11"

关于ruby - 用 gsub 替换字符串中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18571385/

相关文章:

encoding - Python 2.7 类型错误 : file() argument 1 must be encoded string without NULL bytes, 不是 str

java - 如何创建编码器?解码器?

c++ - 需要解释如何使用 C++ 在 Linux 上创建 utf-8 编码的文件

windows - 从 .sql 文件读取 SQL 而不是在 SQLite 浏览器中执行它时,数据以不正确的编码结束

java - 从Word文档复制到网页时文本发生变化

node.js - 如何在 Node.js 中为请求编码任意字符串?

ruby-on-rails - 使用 CSS 和 javascript 的 Rails gem

ruby-on-rails - 使 Rails 的 number_to_percentage 输出基于输入值的动态小数位数?

Ruby 字符串处理

ruby - 在 Helicon Zoo 上部署 Sinatra 模板