-2

Java regex Is there a regular expression way to replace a set of a another set (shell tr​​ command など)に関する興味深い質問に出くわしました 。 だから私は次のことを試しました:

                String a = "abc";
                a = a.replaceAll("[a-z]", "[A-Z]");

print a を取得すると、出力は次のようになります

                [A-Z][A-Z][A-Z]

ここで、コンパイラは最初の引数を gegex として取っていると思いますが、2 番目の引数は取っていません。

それで、このコードに何か問題がありますか、それとも他の何かが理由ですか???

4

7 に答える 7

4

これが replaceAll の仕組みです。

APIを参照してください:

public String replaceAll(String regex, String replacement)

指定された正規表現に一致するこの文字列の各部分文字列を、指定された置換で置き換えます。

于 2012-06-13T10:21:52.337 に答える
2

リンクされた質問への答えは非常に明確な「いいえ」であるため、これは当然のことです。

ドキュメントからわかるように、2 番目の引数は実際には、置換として使用される通常の文字列です。

パラメーター:

  • regex– この文字列が照合される正規表現
  • replacement– 一致ごとに置換される文字列
于 2012-06-13T10:23:18.843 に答える
1

2 番目の引数は、 APIに従って置換される単純な文字列です。

于 2012-06-13T10:20:09.517 に答える
0

私は正規表現を条件を表現する方法と考えています (つまり、与えられた文字列がこの表現に一致するか)。それを念頭に置いて、あなたが求めていることは、「私の文字列で一致するものを...別の条件に置き換えてください」という意味になり、あまり意味がありません.

探しているものを理解しようとすると、文字のクラス間の自動マッピング ([az] -> [AZ] など) を見つけたいと思うようになります。私の知る限り、これは存在せず、自分で作成する必要があります (前述の toUpperCase() を除く)。

于 2012-06-13T10:29:41.287 に答える
0
 public String replaceAll(String regex, String replacement)

最初の引数は、部分文字列がそのパターンと一致する場合は正規表現であり、2 番目の引数に置き換えられます。小文字から大文字に変換する場合は使用します

 toUpperCase() 

方法

于 2012-06-13T10:30:01.923 に答える
0

小文字を大文字に変換したい場合は、String クラスで利用できる toUpperCase 関数があります。ユーティリティと同等の機能についてtrは、Java (Java 7 まで) ではサポートされていないと思います。

$n置換文字列は、n が正規表現のキャプチャ グループの番号を表すシーケンスを除いて、通常は文字どおりに取得されます。これは、一致からキャプチャされた文字列を置換として使用します。

于 2012-06-13T10:20:12.120 に答える
0

jtrを調べる必要があります。使用例:

String hello = "abccdefgdhcij";
CharacterReplacer characterReplacer;

try {
    characterReplacer = new CharacterReplacer("a-j", "Helo, Wrd!");
    hello = characterReplacer.doReplacement(hello);
} catch(CharacterParseException e) {
}

System.out.println(hello);

出力:

Hello, World!
于 2012-06-13T13:34:23.330 に答える