Java 先読みと後読みを使用して区切り文字を保持したまま文字列を分割する方法

Barbara Streisand
リリース: 2024-10-24 14:41:31
オリジナル
370 人が閲覧しました

How to Split Strings with Delimiters Preserved Using Java Lookahead and Lookbehind?

区切り文字を保持した文字列の分割

一意の区切り文字のセットで区切られた複数行の文字列を扱う場合、文字列を分割するのが難しい場合があります。区切り文字自体も保持します。標準の 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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!