【发布时间】:2013-11-22 14:01:24
【问题描述】:
我有一个包含不可打印字符的字符串。
我目前正在做的是用波浪号替换它们:
string.gsub!(/^[:print:]]/, "~")
但是,我实际上想将它们转换为它们的整数值。
我试过了,但它总是输出0
string.gsub!(/[^[:print:]]/, "#{$1.to_i}")
想法?
【问题讨论】:
标签: ruby regex string non-printing-characters
我有一个包含不可打印字符的字符串。
我目前正在做的是用波浪号替换它们:
string.gsub!(/^[:print:]]/, "~")
但是,我实际上想将它们转换为它们的整数值。
我试过了,但它总是输出0
string.gsub!(/[^[:print:]]/, "#{$1.to_i}")
想法?
【问题讨论】:
标签: ruby regex string non-printing-characters
String#gsub, String#gsub! 接受可选块。块的返回值用于替换。
"\x01Hello\x02".gsub(/[^[:print:]]/) { |x| x.ord }
# => "1Hello2"
【讨论】:
Object#inspect 也是一个选项,如果您只需要输出带有不可打印字符的字符串来记录或用于调试目的。
puts "\x01Hello\x02".inspect
# => "\u0001Hello\u0002"
【讨论】: