文字列分割中の区切り文字の維持
一連の区切り文字で区切られた複数行の文字列を扱うときの一般的なタスクは、文字列を次のように分割することです。個々の部分。通常、この目的には String.split メソッドが使用されます。ただし、このアプローチでは結果から区切り文字が省略されます。
先読みと後読みの使用
分割中に区切り文字を保持するには、正規表現で先読みと後読みの概念を使用できます。
次のコードを考えてみましょう:
<code class="java">System.out.println(Arrays.toString("a;b;c;d".split("(?<=;)"))); System.out.println(Arrays.toString("a;b;c;d".split("(?=;)"))); System.out.println(Arrays.toString("a;b;c;d".split("((?<=;)|(?=;))")));</code>
このコードは、先読みと後読みを使用して文字列を調べます。具体的には、(?<=;) はセミコロン (;) の直前にある空の文字列に一致し、(?=;) はセミコロンの直後にある空の文字列に一致します。
最後の行は分割されます。 on ((?<=;)|(?=;)) は、文字列をテキストと区切り文字の両方のコンポーネントに効率的に分離します。
[a;, b;, c;, d] [a, ;b, ;c, ;d] [a, ;, b, ;, c, ;, d]
望ましい結果では、3 行目が正確な要件を捉えています。ここで、各テキスト セグメントの後には対応する区切り文字が続きます。
変数による読みやすさの向上
正規表現の読みやすさを向上するには、その関数を表す変数の作成を検討してください。たとえば、次のコードでは、WITH_DELIMITER 変数を使用して区切り文字を指定しています。
<code class="java">static public final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))"; public void someMethod() { final String[] aEach = "a;b;c;d".split(String.format(WITH_DELIMITER, ";")); ... }</code>
この手法は、正規表現の意図を明確にするのに役立ちます。
以上が文字列の分割中に区切り文字を保持できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。