- ベストアンサー
C# String の中の\ をエスケープとして
VisualStudio2010 C# でString 中の\ をエスケープシーケンスとして処理したいです。 String strText = this.textBox1.Text; String strPattern = this.textBox2.Text; String strReplaceText = this.textBox3.Text; strText = Regex.Replace(strText, @strPattern, strReplaceText, RegexOptions.Singleline); this.textBox3 に\r\n と入れて、Regex.Replace で改行として扱いたいんです。でも実際には\r\n は文字として扱われています。 コツを教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> テキストボックス経由で\r\n を渡されると4バイトの文字列になっちゃう訳です。これを2バイトの\r\n として見なしたいのです・・・ いやだから strPattern = strPattern.Replace(@"\r","\r"); // これで strPattern = strPattern.Replace(@"\n","\n"); // よくね?
その他の回答 (1)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
using System; using System.Text.RegularExpressions; class Program { public static void Main() { string strText = "Hello\r\nworld"; string strPattern = @"\r\n"; string strReplaceText = "復帰改行"; Console.WriteLine("before : [{0}]", strText); strPattern = strPattern.Replace(@"\r","\r"); // これで strPattern = strPattern.Replace(@"\n","\n"); // よくね? strText = Regex.Replace(strText, strPattern, strReplaceText, RegexOptions.Singleline); Console.WriteLine("after : [{0}]", strText); } } --- 実行結果 --- before : [Hello world] after : [Hello復帰改行world]
お礼
ありがとうございます。 上記コードをもう一度見直したところ、これぞ力業という事で納得しました。要するに、エスケープシーケンスらしい文字列はエスケープシーケンスにイチイチ置き換えると。 納得できましたのでベストアンサーとしたいのですが、C#なら何かこう簡単な解決法があってもいいきがしますので、もう少しだけ回答を募集させてください!
補足
ありがとうございます。 ちょっと違うんですが・・・やりたい事は、"復帰改行"じゃなくて"\r\n" なんです。いや"\r\n" とソースに記述すればちゃんと改行として見なされますよね。 テキストボックス経由で\r\n を渡されると4バイトの文字列になっちゃう訳です。これを2バイトの\r\n として見なしたいのです・・・(なんか力業で解決できそうな気がしてきた・・・) C#なら便利な関数があってもよさげな気がします。だれかご存じないですか?
お礼
ありがとうございます。
補足
strReplaceText = strReplaceText.Replace(@"\r","\r"); 〃 に直しまして対処しました。ありがとうございました。