C# で文字列を分割するときに区切り文字を保持する
多くの場合、特定の区切り文字を使用して文字列を分割する必要がありますが、結果の配列でもそれらの区切り文字を保持したい場合があります。 この記事では、C# で正規表現を使用した信頼性の高い方法を示します。
解決策: 正規表現
C# の Regex.Split
メソッドを巧妙に作成された正規表現と組み合わせることで、解決策が提供されます。重要なのは、肯定的な後読みアサーションを使用することです。 肯定的な後読みでは、一致自体にそのパターンが含まれるなしで、現在の位置よりも前にパターンが存在することが保証されます。
正規表現パターン:
このパターンは、区切り文字 (この例ではコンマ、ピリオド、セミコロン) を検索し、それらが出力に残ることを保証します。
<code class="language-csharp">(?<=(?:[,.;]))</code>
(?<=...)
: これは肯定的な後読みアサーションです。(?:[,.;])
: これは、カンマ、ピリオド、またはセミコロンに一致する非キャプチャ グループです。コード例:
コードで説明してみましょう:
<code class="language-csharp">using System.Text.RegularExpressions; // ... other code ... string originalString = "This,is,a,comma,separated,string."; string[] parts = Regex.Split(originalString, @"(?<=(?:[,.;]))"); // parts array will contain: // ["This",",","is",",","a",",","comma",",","separated",",","string","."] </code>
正規表現は、各区切り文字の直後の位置で文字列を分割します。 区切り文字自体は一致に含まれないため、結果の配列に保存されます。
出力:
出力は、元の文字列が分割され、各区切り文字が結果の配列に個別の要素として含まれていることを示しています。 正の後読みにより、区切り文字が文字列セグメントに吸収されることなく分割の一部となることが保証されます。
以上がC# で区切り文字を保持したまま文字列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。