文字列から「\r\」を削除する方法はありますか? Soar 私は "\r" だけを削除することができましたmystring.gsub(/\r/,"")
3文字すべてを削除するにはどうすればよい\r\
ですか?
文字列には、リテラル文字「\」と「r」がありますか、それともエスケープシーケンス「\ r」がありますか?
文字列がある場合、文字foo\r\fbar
列の長さは8文字です。
"foo\r\fbar".split(//).map(&:ord)
=> [102, 111, 111, 13, 12, 98, 97, 114]
削除するのは、\r
and\f
文字、または文字コード13と12です。は1文字であるため、の先頭のスラッシュだけを削除することはできません。これがあなたの場合であるならば、あなたは使うことができます:\f
\f
"foo\r\fbar".gsub(/\r\f/, "")
=> "foobar"
ただし、文字通りのシーケンスがある場合foo\\r\\fbar
:
"foo\\r\\fbar".split(//).map(&:ord)
=> [102, 111, 111, 92, 114, 92, 102, 98, 97, 114]
次に、「f」の前のとスラッシュを削除できます。\r
"foo\\r\\fbar".gsub(/\\r\\/, "")
=> "foofbar"
シーケンスがある場合foo\r\\fbar
:
"foo\r\\fbar".split(//).map(&:ord)
=> [102, 111, 111, 13, 92, 102, 98, 97, 114]
\r
次に、同様に「f」の前のとスラッシュを削除できます。
"foo\r\\fbar".gsub(/\r\\/, "")
=> "foofbar"
お分かりのように、あなたは自分自身と矛盾しているため、実際にどの文字を削除する必要があるかを判断するのは困難です. あなたが言うタイトルとあなたが言う"\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\\/, '') # => ""
これを使って:
mystring.gsub(/\r\\/,"")