0

文字列内の数字以外の文字を他の数字以外の文字に置き換えたい。たとえば、次のように変更します。

4/14/2013%Univ. of Massachusetts-Amherst%Sacred Heart University%7-0

4/14/2013%Univ. of Massachusetts-Amherst%Sacred Heart University%7%0

すべてのハイフンを削除したくはありません。数字の間のハイフンだけです。使おうとしていた

line.replaceAll("-\\d+", "%\\d+");

しかし、それは2番目の数字をリテラルに置き換えますd+

4

2 に答える 2

1

まず、JAVA で正規表現を扱う場合、2 つのバックスラッシュが必要です。エスケープ シーケンスは、\\実行時に単一のバックスラッシュに変換されます。ここで、最初の式の一部を「キャプチャ」するには、キャプチャ グループを使用する必要があります。正規表現の一部を括弧で囲むことにより、置換で使用される文字列の一部を「キャプチャ」します。最初(\\d)-(\\d)のキャプチャ グループはハイフンの前の数字で、2 番目はハイフンの後の数字です。

これらの数字を文字列に戻すには、それらをキャプチャするための構文 (JAVA では $. 結果の文字列は$1%$2、「キャプチャ グループ 1 の後に % が続き、その後にキャプチャ グループ 2 が続く」という意味になります。

コードの最終行は次のようになります。

line.replaceAll("(\\d)-(\\d)", "$1%$2");
于 2013-04-17T03:33:53.870 に答える
1

パラメータstring.replaceAll()を this"-(\\d+)", "%$1"に変更します。ここでは、によってキャプチャされる$1ことを意味しますgroup 1(\\d+)

于 2013-04-17T03:31:33.450 に答える