-1

以下の 5 行ではなく、1 行の正規表現を記述できますか?

strTestIn = strTestIn.replaceAll("^\\s+", "");
strTestIn = strTestIn.replaceAll("[ ]+", " ");
strTestIn = strTestIn.replaceAll("(\\r\\n)+", "\r\n");
strTestIn = strTestIn.replaceAll("(\\t)+", " ");
strTestIn = strTestIn.replaceAll("\\s+$", "");

これらの正規表現の違いは何ですか?

4

1 に答える 1

6
strTestIn = strTestIn.replaceAll("^\\s+", "");

文字列の先頭にある空白を削除します。

strTestIn = strTestIn.replaceAll("\\s+$", "");

文字列の末尾の空白を削除します。

strTestIn = strTestIn.replaceAll("[ ]+", " ");

複数のスペースを 1 つのスペースに凝縮します。

strTestIn =strTestIn.replaceAll("(\\r\\n)+", "\r\n");

隣接する改行を単一の改行に置き換えることにより、空行を削除します。

strTestIn = strTestIn.replaceAll("(\\t)+", " ");

タブを 1 つのスペースに凝縮します。

だからみんな違うことをしている。同じ置換文字列を持つものについては、組み合わせが可能です。

strTestIn = strTestIn.replaceAll("^\\s+|\\s+$", "");
strTestIn = strTestIn.replaceAll(" {2,}|\t+", " ");
strTestIn = strTestIn.replaceAll("(\r\n)+", "\r\n");

また、正規表現を少しクリーンアップして改善することもできます (不要なバックスラッシュをいくつか削除し、スペースの最小数を 2 に変更します)。

于 2013-06-11T09:20:26.350 に答える