【问题标题】:Ruby, delete null values of a stringRuby,删除字符串的空值
【发布时间】:2011-11-23 10:47:13
【问题描述】:

示例:

String test="hi\000\000\000"

问题: 有些方法要求字符串不能有空值,如何删除字符串的所有空值?

.split("\000",1) gives me an error: 'force_encoding' method doesn't exist
.gsub('\000','') does nothing

【问题讨论】:

  • '\000' 在 Ruby 中的计算结果为 "\\000"

标签: ruby string null


【解决方案1】:

更简单:

test.delete("\000")

【讨论】:

    【解决方案2】:

    尝试使用双引号,所以test.gsub("\000", '')

    【讨论】:

    • 忘记了 ' ' 不解析转义字符,谢谢。 (距离我接受答案还有 5 分钟。
    【解决方案3】:

    现在我在 JRuby 中尝试了这个,它成功了:

    test.gsub(/\000/, '')
    

    请注意,我在 gsub 中使用的是正则表达式,而不是字符串。

    【讨论】:

    • 也可以(虽然我的天敌是正则表达式)
    • Regexp 文字替换比 MRI 中的单字符串替换要快得多。不确定 JRuby。
    • @Bob Aman:确实。你知道为什么吗?无论如何,我认为正则表达式对于这种情况来说是多余的。
    • 并非如此。我的猜测是 Regexp 代码通过了更好的优化代码路径。
    猜你喜欢
    • 1970-01-01
    • 2012-07-02
    • 2015-07-18
    • 2017-11-29
    • 2018-04-12
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多