区切り文字を保持した文字列の分割
一意の区切り文字のセットで区切られた複数行の文字列を扱う場合、文字列を分割するのが難しい場合があります。区切り文字自体も保持します。標準の String.split メソッドは、指定された区切り文字に基づいて文字列のみを分割し、区切り文字を破棄します。
先読みと後読みの使用
Java Development Kit (JDK)は、先読みと後読みを使用したソリューションを提供します。これらは、最終結果に文字を含めずに文字を照合してキャプチャできる正規表現の機能です。
次に、先読みと後読みを使用する例を示します。
<code class="java">String input = "(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)"; String[] splitWithDelimiter = input.split("((?<=;)|(?=;))"); System.out.println(Arrays.toString(splitWithDelimiter));</code>
パターン:
出力:
[Text1, ;, DelimiterA, ;, Text2, ;, DelimiterC, ;, Text3, ;, DelimiterB, ;, Text4]
この結果は、テキストとともに区切り文字を保持し、文字列の分割中に区切り文字をそのまま維持するという要件を満たします。
可読性の向上
正規表現は、読みにくく理解しにくい場合があります。読みやすさを高めるために、正規表現パターンを表すわかりやすい名前を持つ変数を作成できます。例:
<code class="java">static final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))"; public void someMethod() { final String[] splitResults = input.split(String.format(WITH_DELIMITER, ";")); }</code>
プレースホルダーと Java の String.format を使用すると、正規表現をより直感的で解釈しやすくすることができます。
以上がJava 先読みと後読みを使用して区切り文字を保持したまま文字列を分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。