Probleme mit Escapecodes

Solores

Informatiker Azubi
Hallo alle zusammen!
Habe eine eigentlich sehr einfache Frage, allerdings kann ich mir auch nach stundenlangem Suchen keinen Reim darauf machen wieso der Algorithmus nicht läuft!

Der wichtigste Teil:
Code:
public class Test 
{

	public static void main(String[] args) 
	{

		String url = "start E:\\Filme\\Action\\Edgar Wallace\\Das Gesicht im dunkeln.avi";
		String sub = "error";
		int count = 0;
		int index = 0;
		
		for(int i = 0; i< url.length();i++)
		{
			if(count == 0)
			{
				index = url.indexOf("\\");
				url = url.replaceFirst("\\", "\\\"");
			}
			else
			{
				sub = url.substring(index+1);
				sub = sub.replaceAll("\\", "\"\\\"");
			}
		//url = url + sub;
		
		count++;
		}
System.out.println(url);
	}

}

Das Programm soll aus dem Pfad:

E:\\Filme\\Action\\Edgar Wallace\\Das Gesicht im dunkeln.avi;

diesen Pfad erzeugen:

E:\\\"Filme\"\\\"Action\"\\\"Edgar Wallace\"\\\"Das Gesicht im dunkeln.avi\";

Das soll dann als ausgegebenener String so aussehen soll:

E:\"Filme"\"Action"\"Edgar Wallace"\"Das Gesicht im dunkeln.avi";

Ich bekomme immer folgende Fehlermeldung:

Code:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
	at java.util.regex.Pattern.error(Unknown Source)
	at java.util.regex.Pattern.compile(Unknown Source)
	at java.util.regex.Pattern.<init>(Unknown Source)
	at java.util.regex.Pattern.compile(Unknown Source)
	at java.lang.String.replaceFirst(Unknown Source)
	at GUI.Test.main(Test.java:20)

Danke im voraus!
 
Hallo Solores,
Der Grund warum dein Algorithmus nicht läuft ist der Folgende:
Auf Zeile 17 ersetzt du einen Teil des Strings (mit Escape Character) mit einem anderen Teil (ebenfalls mit Escape Character). Jeder Backslash benötigt ja wiederum einen Backslash als Escape Character. Daher würde dein String nach einmal Zeile 17 (dein Code) etwa so aussehen:

Vorher:
E:\\Filme\\Action\\Edgar Wallace\\Das Gesicht im dunkeln.avi;
Nachher:
E:\"\Filme\\Action\\Edgar Wallace\\Das Gesicht im dunkeln.avi;

Nun, das ist leider kein gültiger String mehr...

Lösung: (Ich habe den Algorithmus umgebaut, weil deiner leider nicht das gewünschte Resultat produziert)

Java:
public class Test
{
  public static void main(String[] args)
  {
    String sUrl = "start E:\\Filme\\Action\\Edgar Wallace\\Das Gesicht im dunkeln.avi";
    String sResult = "";

    String[] parts = sUrl.split("\\\\");
    int iSize = parts.length;

    if(iSize > 0)
    {
    	sResult += parts[0] + "\\";
    	for(int a=1; a<iSize; a++)
      {
       	sResult += "\"";
       	sResult += parts[a];
       	sResult += "\"";
       	if(a<iSize-1)
       	{
       	  sResult += "\\";
       	}
      }
    }

    System.out.println(sResult);
  }
}

Freundliche Grüsse
CKingZesi
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück