【问题标题】:Deleting an unwanted character in a string删除字符串中不需要的字符
【发布时间】:2016-06-29 06:58:47
【问题描述】:

我正在解析一个 CSV 文件并将每个元素转换为 UTF-8:

CSV.foreach(@data_source, { :col_sep => ';' , quote_char: "\x00", :encoding => "CP850"}) do |row|
    row.map! {|x| x.force_encoding('UTF-8') unless x.nil? ; x.scrub!("") unless x.nil? ; x.delete('\u2FEC') unless x.nil? }
end

脚本然后进行大量计算,然后使用axlsx gem 以xlsx 格式保存数据。

我添加了x.delete('\u2FEC') unless x.nil?,因为我发现在源文件中,有这个奇怪的序列后来导致Excel中出现“不可读的内容”错误。

我发现它解决了“不可读的内容”问题但是它不仅删除了"\u2FEC" 序列,还删除了每个出现的字符"2"

你知道我怎样才能摆脱only "\u2FEC" 而不是我行中的每个"2" 吗?

谢谢。

【问题讨论】:

  • 你为什么在这个问题的其他部分写'\u2FEC'delete,同时写"\u2FEC"?您的问题源于这种草率。

标签: ruby string csv encoding


【解决方案1】:

单引号字符串不支持 Unicode 转义。 (事实上​​,除了\'\\ 之外,它们不支持任何 转义。)

您需要使用双引号字符串或将字符直接输入单引号字符串而不是 Unicode 转义序列。

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 2021-01-13
    • 2015-08-06
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    相关资源
    最近更新 更多