C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C#での文字列置換でメタ文字を使用したい


(過去ログ 109 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■64912 / inTopicNo.1)  C#での文字列置換でメタ文字を使用したい
  
□投稿者/ つぐみ (1回)-(2013/01/22(Tue) 12:36:48)

分類:[C#] 

こんにちは
C#2010で正規表現を使用してRichTextBox内の文字列を置換したい考えています。
下記の例では”ああああああいいいいいいい”の「あい」の間に改行を追加したいのです。

string slist[];

richTextBox1.Text="ああああああいいいいいいい"

slist [0]="あ+"
slist [1]="あ\n"

richTextBox1.Text = System.Text.RegularExpressions.Regex.Replace(richTextBox1.Text,
@slist[0], @slist[1],System.Text.RegularExpressions.RegexOptions.Multiline);

上記のように書きしましたが、うまくできませんでした。
置換文字列にメタ文字が使用できないようで、「ああああああ\nいいいいいいい」
になってしまいます。

置換文字列にメタ文字を使用することは可能なのでしょうか?
Regexを使用使用するのが難しい場合、何か他の方法がありますでしょうか?

よろしくお願いします。
引用返信 編集キー/
■64920 / inTopicNo.2)  Re[1]: C#での文字列置換でメタ文字を使用したい
□投稿者/ つぐみ (3回)-(2013/01/22(Tue) 16:24:05)
自己レスです。質問内容の一部が間違っていました。
訂正します。

slist [0]="あ+" → slist [0]="あい" 
slist [1]="あ\n" → > slist [1]="あ\nい"

となり

string slist[];

richTextBox1.Text="ああああああいいいいいいい"

slist [0]="あい"
slist [1]="あ\nい"

richTextBox1.Text = System.Text.RegularExpressions.Regex.Replace(richTextBox1.Text,
@slist[0], @slist[1],System.Text.RegularExpressions.RegexOptions.Multiline);

置換結果→「ああああああ\nいいいいいいい」

なってしまいます。

すみません。どうぞ、よろしくお願いいたします。
引用返信 編集キー/
■64921 / inTopicNo.3)  Re[2]: C#での文字列置換でメタ文字を使用したい
□投稿者/ 魔界の仮面弁士 (122回)-(2013/01/22(Tue) 16:42:44)
No64920 (つぐみ さん) に返信
> \n
CrLf 改行あるいは Cr 改行の方が良い気も。


> richTextBox1.Text = System.Text.RegularExpressions.Regex.Replace(richTextBox1.Text,
> @slist[0], @slist[1],System.Text.RegularExpressions.RegexOptions.Multiline);
slist は予約語では無いので、@ は不要かと。


> 置換結果→「ああああああ\nいいいいいいい」
「改行」ではなく「\n」を指定しているのではありませんか?


  //string[] slist = { @"あい", "あ\nい" };   // Lf改行
  //string[] slist = { @"あい", "あ\xAい" };  // Lf改行
  //string[] slist = { @"あい", "あ\\nい" };  // "\n"
  //string[] slist = { @"あい", @"あ\nい" };  // "\n"
  //string[] slist = { @"あい", @"あ\\nい" }; // "\\n"
  string[] slist = { @"あい", @"あ
い" }; // 改行


  richTextBox1.Text="ああああああいいいいいいい";

  richTextBox1.Text = System.Text.RegularExpressions.Regex.Replace(
      richTextBox1.Text,
      @slist[0],
      @slist[1],
      System.Text.RegularExpressions.RegexOptions.Multiline);

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -