2

これを取得できず、グーグルもあまり役に立ちませんでした..

最初に知っていること: 文字列と正規表現が与えられた場合、この正規表現に一致するすべての文字列を置換文字列で置き換える方法は? String クラスでreplaceAll()メソッドを使用します。

今、私ができないこと。現在、コードに含まれている正規表現は [^a-zA-Z] であり、この正規表現には間違いなく範囲があることがわかっています。リストにさらにいくつかの文字が追加される可能性があります。以下のコードの出力として必要なのはWorksheet+blahですが、replaceAll() を使用して得られるのはWorksheet++++blahです

String homeworkTitle = "Worksheet%#5_blah";
String unwantedCharactersRegex = "[^a-zA-Z]";
String replacementString = "+";
homeworkTitle = homeworkTitle.replaceAll(unwantedCharactersRegex,replacementString);
System.out.println(homeworkTitle);

私が望む出力を達成する方法は何ですか? ここで不足している Java メソッドはありますか?

4

2 に答える 2

5
[^a-zA-Z]+

上手にやってくれます。

可能な限り多くの非アルファベット文字に一致するために貪欲な量指定子が必要であり、すべての一致を 1 つの '+' に置き換えます (デフォルトでは - 貪欲な量指定子)。

注: [^a-zA-Z]+?'+' 量指定子を遅延さ[^a-zA-Z]せ、一度に 1 つの非アルファベット文字のみに一致するため、 と同じ結果が得られます。

于 2008-11-22T12:30:12.707 に答える
2
String unwantedCharactersRegex = "[^a-zA-Z]"

これは単一の非文字に一致します。そのため、文字以外の文字はそれぞれ + に置き換えられます。「1つ以上」と言う必要があるので、試してください

String unwantedCharactersRegex = "[^a-zA-Z]+"
于 2008-11-22T12:31:52.673 に答える