我有一个看起来像这样的字符串。
mystring="The Body of a\r\n\t\t\t\tSpider"
我想用空格替换所有\ r,\ n,\ t等。
我为此写的代码是:
mystring.gsub(/\\./, " ")
但这并不是对字符串做任何事情。
帮助。
答案 0 :(得分:7)
\r
,\n
和\t
是escape sequences,表示回车,换行和制表符。虽然它们被写成两个字符,但它们被解释为作为单个字符:
"\r\n\t".codepoints #=> [13, 10, 9]
因为这是一个常见的要求,所以shortcut \s
匹配所有空白字符:
mystring.gsub(/\s/, ' ')
#=> "The Body of a Spider"
或\s+
匹配多个空白字符:
mystring.gsub(/\s+/, ' ')
#=> "The Body of a Spider"
/\s/
相当于/[ \t\r\n\f]/
答案 1 :(得分:2)
String#tr
专为流符号替换而设计。它似乎比String#gsub
:
mystring.tr "\r", ' '
它还有一个insplace版本(这将替换所有回车,换行和带空格的空格):
mystring.tr! "\s\r\n\t\f", ' '
答案 2 :(得分:1)
> a = "The Body of a\r\n\t\t\t\tSpider"
=> "The Body of a\r\n\t\t\t\tSpider"
> a.gsub(/[^0-9A-Za-z]/, ' ')
=> "The Body of a Spider"
答案 3 :(得分:0)
您可以使用strip
,然后在字符串中添加空格
mystring.strip . " "
如果您在字符串中确实有\ r \ n \ t:
mystring="The Body of a\r\n\t\t\t\tSpider"
mystring.split(/[\r\t\n]/)