2

文字列の一部を別の文字列に置き換えたい。たとえば、文字列が入ってきて が含まれていますがmeat、それを に変更したいとしmeatますvegetable。次のステートメントでこれを行うことができることを知っています。

str = str.replaceAll("meat", "vegetable");

ただし、大文字と小文字を正確に区別する必要があります。example の大文字または小文字に関係なく、これを行う方法を探していますmeat

私のアプリケーションは Minecraft のフィルターです。誓うか、メニューをカスタマイズするだけです。minecraft大文字と小文字に関係なく、単語のすべてのインスタンスを置き換えたいのと同じように、と言いBest game Ever!!ます。

特定の大文字を認識して置換できるように改造しましたが、これは非常に制限的です。

誰かがこれで私を助けることができるように、私は十分な情報を提供したことを願っています.

4

3 に答える 3

10

(?i)開始時にフラグを追加することで、正規表現の大文字と小文字を区別しないようにすることができます

str = str.replaceAll("(?i)meat", "vegatable");

System.out.println("aBc def".replaceAll("(?i)abc","X")); // out: "X def" 
于 2013-02-26T23:34:35.223 に答える
4

の最初の引数replaceAllは正規表現であり、大文字と小文字を区別しないように式にフラグを埋め込むことができます。

str = str.replaceAll("(?i)meat", "vegatable");
于 2013-02-26T23:35:34.813 に答える
4

別の方法: ここでは、フラグは明示的に正規表現ではなく、別のパラメーターとして渡されます。

String input = "abc MeAt def";
Pattern pattern = Pattern.compile("meat", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(input);
String output = matcher.replaceAll("vegetable");
System.out.println(output);
于 2013-02-26T23:36:18.497 に答える