从字符串中删除“\ n \”

时间:2013-03-16 22:54:56

标签: ruby regex

有没有办法从字符串中删除“\ r \”? Sofar我设法仅使用mystring.gsub(/\r/,"")

删除“\ r \ n”

如何删除所有3个字符\r\

4 个答案:

答案 0 :(得分:2)

在你的字符串中,你有文字字符“\”和“r”,还是你有转义序列“\ r”?

如果您有字符串foo\r\fbar,那么您的字符串长度为8个字符:

"foo\r\fbar".split(//).map(&:ord)
 => [102, 111, 111, 13, 12, 98, 97, 114]

您要删除的内容包括\r\f字符,或字符代码13和12.您无法仅删除{{中的前导斜杠1}},因为\f只是一个字符。如果是这种情况,您可以使用:

\f

但是,如果您有文字序列"foo\r\fbar".gsub(/\r\f/, "") => "foobar"

foo\\r\\fbar

然后你可以删除{f}之前的"foo\\r\\fbar".split(//).map(&:ord) => [102, 111, 111, 92, 114, 92, 102, 98, 97, 114] 和斜杠:

\r

如果你有序列"foo\\r\\fbar".gsub(/\\r\\/, "") => "foofbar"

foo\r\\fbar

然后你也可以在“f”前删除"foo\r\\fbar".split(//).map(&:ord) => [102, 111, 111, 13, 92, 102, 98, 97, 114] 和斜杠:

\r

答案 1 :(得分:0)

使用此:

mystring.gsub(/\r\\/,"")

答案 2 :(得分:0)

mystring.gsub(/\\r\\/,"")

Ivaylo如此亲密:P

我在http://rubular.com/

上测试了它

答案 3 :(得分:0)

正如您所知,我们很难弄清楚您实际需要删除的字符,因为您自相矛盾。在标题中,您说"\n\",并在问题中说"\r\"。无论哪种方式,这就是我要做的事情,以便找出我需要搜索的内容。

从有问题的字符串开始:

mystring = "\n\\"

我使用bytes方法让Ruby告诉我应该使用的内容:

mystring = "\n\\"                    # => "\n\\"
mystring.bytes.map{ |b| '%02x' % b } # => ["0a", "5c"]
mystring.tr("\x0a\x5c", '')          # => ""
mystring.gsub(/\x0a\x5c/, '')        # => ""

mystring = "\r\\"                    # => "\r\\"
mystring.bytes.map{ |b| '%02x' % b } # => ["0d", "5c"]
mystring.tr("\x0d\x5c", '')          # => ""
mystring.gsub(/\x0d\x5c/, '')        # => ""

处理转义字符可能是任何编程语言的痛苦,但如果我查看构成字符的确切字节,我就不会出错,只要我处理ASCII。如果它是另一个字符集,我会想要使用chars方法,并适当调整我的模式:

mystring = "\n\\"         
mystring.chars.to_a       # => ["\n", "\\"]
mystring.gsub(/\n\\/, '') # => ""
mystring.tr("\n\\", '')   # => ""

mystring = "\r\\"         
mystring.chars.to_a       # => ["\r", "\\"]
mystring.tr("\r\\", '')   # => ""
mystring.gsub(/\r\\/, '') # => ""