【初心者】Java質問・相談スレ48【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0628デフォルトの名無しさん
NGNGOS RH Linux
で、正規表現を試しています。
文字列の置換がしたくてreplaceAllを試してみたんですが、ユニコードエスケープした
置換がうまく動いてくれません。
コンパイルは出来るんですが、実行するとエラーです。
public class RegTest {
public static void main(String[] args) {
String str = "String Text Hoge Fuga Hage";
String str2 = "\u0024";
System.out.println("str.replace[" + str.replaceAll("Hoge", "\u0024") + "]");
//System.out.println("str.replace[" + str.replaceAll("Hoge", "HOGE") + "]");
System.out.println("str2[" + str2 + "]");
}
}
こういうソースで試したら、次のような例外が発生してしまいます。
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(String.java:444)
at java.util.regex.Matcher.appendReplacement(Matcher.java:559)
at java.util.regex.Matcher.replaceAll(Matcher.java:661)
at java.lang.String.replaceAll(String.java:1663)
at RegTest.main(RegTest.java:5)
#他にも、IllegalArgumentExceptionが発生した事もあります。
#引数のregexは特殊リテラルを含まないただの文字列、replacementは
#ユニコードエスケープした文字列です
■ このスレッドは過去ログ倉庫に格納されています