2014-12-29 48 views
-3

我有這個練習。爲什麼不使用replaceAll?我有一個錯誤:字符串索引超出範圍:1個java替換e replaceAll。 ReplaceAll不能正常工作

public class e3 { 

    public static void main(String[] args) { 
     String x="Sessione successiva"; 
     String nuova=x.replace("i", "!"); 
     String nuova2=nuova.replace("s", "$"); 
     String nuova3=nuova2.replace("e", "&"); 
     System.out.println(nuova3); 

      //replaceAll 
     String nuovaz=x.replaceAll("i", "!"); 
     String nuova2z=nuovaz.replaceAll("s", "$"); 
     String nuova3z=nuova2.replaceAll("e", "&"); 
     System.out.println(nuova3z); 


    } 

} 
+1

'字符串nuova3z = nuova2.replaceAll( 「E」,「&");'有一個錯誤,'nuova2'應該是'nuova2z'。 –

回答

3

replaceAll作品使用正則表達式。在replacAll方法中,$是一個保留字符,用於引用作爲第一個參數給定的正則表達式中定義的組,因此您需要將其轉義。

String nuova2z=nuovaz.replaceAll("s", "\\$"); 

DEMO

1

你需要逃避這在正則表達式中使用的字符,請嘗試以下操作:

String nuovaz=x.replaceAll("i", "!"); 
String nuova2z=nuovaz.replaceAll("s", "\\$");