【解決方法】c# を使用して、richtextbox で複数の入力 (\n\n) を単一の入力 \n に置き換えます


みなさん、こんにちは。

ユーザーがパッセージを入力するリッチテキストボックスがありますが、ユーザーが複数入力すると (\n\n\n)、それを単一の \n に置き換えたいのですが、これがどのように可能かわかりません。

ラムダ式を使用して複数のスペースを単一のスペースに置き換えました

var list = rtxtTypeing.Text.Split(‘ ‘).Where(s => !string.IsNullOrWhiteSpace(s));
rtxtTypeing.Text = string.Join(” “, リスト);

複数の \n\n\n を単一の入力に置き換えるために使用したいのと同じもの \n

var list3 = rtxtTypeing.Text.Split(‘\n’).Where(s => !string.IsNullOrWhiteSpace(s));
rtxtTypeing.Text = string.Join(“\n”, list3);

しかし、それは機能していません。

私が間違っているところを助けてください。

ありがとう
ラム・クマール

解決策 1

あなたは使用することができます 正規表現[^].
richTextBox1 と richTextBox2 の 2 つのリッチテキスト ボックスと、ボタンがあるとします。
ボタンクリックイベントで、これを追加します:

C#
string txt1 = richTextBox1.Text;
var pattern = "(\\n){2,}";
var replacePattern = "\n";
richTextBox2.Text =  Regex.Replace(txt1, pattern, replacePattern, RegexOptions.IgnoreCase);

解決策 2

Windows では、改行は \r\nCRLF しかし、Unix ベースのシステムでは、改行は \nLF. それはあなたが交換する必要があるものの1つかもしれません。

Windows は、プログラムが実行されているプラ​​ットフォームの改行形式を保持します System.Environment.NewLine

そして、正規表現を使用してもかまわない場合。 このように、両方のプラットフォームで単一のパスで複数の行を削除できます

C#
string formatted = Regex.Replace(rtxtTypeing.Text, @"(?:\r\n|\r(?!\n)|(?!<\r)\n){2,}", System.Environment.NewLine);

見る
複数の改行を単一の br に置き換える[^]

文字列の改行を置き換える[^]

解決策 3

あなたはこれを試すことができます、それは私のために働いた.

RichTextBox1.Rtf=RichTextBox1.Rtf.Replace(“\\\\n”, @”\line”);

コメント

タイトルとURLをコピーしました