私はRegExの専門家であることをまったく主張していませんが、私はこの声明が何をしているのか少し混乱しています。私はリファクタリングをしようとしており、これはキープレスで呼び出され、多くのCPUを食べています。このRegEx文は何をしていますか?
Regex.Replace(_textBox.Text, "(?<!\r)\n", Environment.NewLine);
ありがとうございます。
私はRegExの専門家であることをまったく主張していませんが、私はこの声明が何をしているのか少し混乱しています。私はリファクタリングをしようとしており、これはキープレスで呼び出され、多くのCPUを食べています。このRegEx文は何をしていますか?
Regex.Replace(_textBox.Text, "(?<!\r)\n", Environment.NewLine);
ありがとうございます。
正規表現(?<!\r)\n
は、先に\r
文字ではないいずれかの\n
文字に一致します。構文(?<!
expr
)
はnegative look-behind assertionあるとexpr
がは、現在位置の前だ部分と一致していなければならないことを意味します。
\ nの前に\ rがなく、Environment.NewLine文字列があるすべてのインスタンスを置き換えます。
@Jared NewLineの文字列は環境に応じて変化するので、 \ n –
@ LFSR、true。私は私の答えを更新します – JaredPar
正規表現は、改行文字\n
にマッチします。この改行文字の前には、キャリッジリターン文字である\r
がプラットフォーム固有のものになります(この文字列はプラットフォーム固有の改行文字です) NewLineキャラクター。
NewLineの文字がある:非Unixプラットフォーム用
\r\n
\n
Unixプラットフォームのための回答に加えて、正規表現は(せずにすべての\ n個のと一致しないものを説明しますあなたが何らかの形で\ nの入力をしていない限り、Replace()のこの使用法は決して必要ではないと指摘したいと思います。それでも、テキスト全体が使用されているとき(つまり、何らかの形でデータが送信された後)に、キーストップ上にテキストを表示する必要はありません。
コピーペーストされたテキストをサニタイズするためにそこに置かれた場合、大量のテキストが変更されたときにのみリファクタリングすることができます。
あなたは、キーを押すたびにドキュメント内のすべての改行を置き換えようとしていますか?もしそうなら、それがあなたのパフォーマンス上の問題の原因です。とにかく、なぜそれをやっていますか? –
本当にRegexを頻繁に使用したい場合は、_compile it_してください。 – Cheeso
私の選択ではありませんでした。置換は静的メソッドです。私はこれを行う前に "if _textBox.Contains(" \ n ")"を追加しました。そして、それはCPUのたわごとの負荷を保存しました –