Hohi!
So, mein Problem ist folgendes, ich habe einen String welcher ein paar $ enthält und diesen möchte ich in einem anderen ersetzen.
Probier ich das, kommt eine "Illegal group reference", weil die $ nicht maskiert sind..
Soweit sogut, also $ durch \$ ersetzen.
Gesagt getan, also Code hier:
Dies führt zu der "illegal group reference"! Also gehört vorher noch der replaceWith verändert
HIER KOMMT EINE: " java.lang.StringIndexOutOfBoundsException: String index out of range: 3"
Egal wielange der String ist...
Lustigerweise geht das hier ganz normal:
Replace arbeitet ja mit Regex und da müssen Regexzeichen halt via \ maskiert werden (und in Programmiersprachen ist meist \ = \\).
Ist das ein Java-Bug?
Habs mit Java 1.4 und mit 1.6 getestet...
Hier noch meine Testklasse:
mfg
So, mein Problem ist folgendes, ich habe einen String welcher ein paar $ enthält und diesen möchte ich in einem anderen ersetzen.
Probier ich das, kommt eine "Illegal group reference", weil die $ nicht maskiert sind..
Soweit sogut, also $ durch \$ ersetzen.
Gesagt getan, also Code hier:
Java:
String replaceWith ="HALLO$ DU BIST EIN $";
String str ="HIER WIRD ANSTATT %1 EIN TEXT REIN";
str = str.replaceAll("%1", replaceWith);
Dies führt zu der "illegal group reference"! Also gehört vorher noch der replaceWith verändert
Java:
String replaceWith ="HALLO$ DU BIST EIN $";
replaceWith = replaceWith.replaceAll("\\$", "\\\\$");
Egal wielange der String ist...
Lustigerweise geht das hier ganz normal:
Java:
String replaceWith ="HALLO. DU BIST EIN .";
replaceWith = repalceWith.replaceAll("\\.", "\\\\.");
Replace arbeitet ja mit Regex und da müssen Regexzeichen halt via \ maskiert werden (und in Programmiersprachen ist meist \ = \\).
Ist das ein Java-Bug?
Habs mit Java 1.4 und mit 1.6 getestet...
Hier noch meine Testklasse:
Java:
public class Test
{
public static void main(String args[])
{
String bla = "HANS_WURST_SEMAL";
String blub = "SMS-Rufnummer:$customer.mobilePhone$";
String blubor = "."; //Test mit .
System.out.println(blubor);
blubor = blubor.replaceAll("\\.", "\\\\."); //Punkt ersetzt
System.out.println(">> " + blubor); //\. ausgabe..
blub = blub.replaceAll("\\$", "\\\\$"); //jetzt das ganze mit $/Dollar und BADABUUUUM
System.out.println(">> " + blub);
bla = bla.replaceAll("WURST", blub);
System.out.println(">> " + bla);
}
}
mfg