【问题标题】:How to write gsub with curly quotes for UTF-8 strings?如何为 UTF-8 字符串编写带有大引号的 gsub?
【发布时间】:2012-03-07 09:22:56
【问题描述】:

我正在为 String 类编写一个扩展方法来清理非 ASCII 字符。我正在清理的字符串是 UTF-8。

在文件中使用非 ASCII 字符时,控制台将无法启动,因为它将花引号解释为常规引号。

如何在 gsub 中转义花引号?

如何编写一个使用 unicode 作为大括号的 gsub(例如 U+201C)。

在 Rails 3.07 和 Ruby 1.9.2 中工作。

【问题讨论】:

    标签: ruby-on-rails ruby unicode utf-8 ruby-1.9.2


    【解决方案1】:

    您可以在正则表达式中使用与在双引号字符串中相同的 \u 转义:

    s.gsub(/[\u201c\u201d]/, '"')
    

    例如:

    >> s = "\u201Cpancakes\u201d"
    => "“pancakes”"
    >> puts s.gsub(/[\u201c\u201d]/, '"')
    "pancakes"
    

    【讨论】:

    • @BSeven:这给了我 1.9.2 和 1.9.3 中的“超出字符范围”错误。那应该和s.gsub("\u201c", '"')一样。
    • @BSeven:我需要使用8220.chr(Encoding::UTF_8)chr 表现得明智。
    • 供参考,相同的解决方案,但单引号:s.gsub(/[\u2018\u2019]/, '\'')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多