Java string mit slash und backslash alle in slash wandeln

Tr3x

Lieutenant
Registriert
Feb. 2007
Beiträge
640
hallo;

ich versuche gerade einen beliebigen string zu säubern. dazu soll ein (mit / und \) so aussehen das alle \ in / gewandelt wird.

bisher dachte ich eine schleife mit einer if bedingung:

Code:
int j;        String s1;        String s2 = "";
        s1 = "///\\/das//\\//ist///ein///test///\\/// ";
        j = s1.length();
                 
        for(int i = 0; i<j ;i++)
            {
                if(s1.charAt(i) != '\')
                s2 += s1.charAt(i);
               else
                s2 += '/';
            }
         
        System.out.printf(s2);

das problem ist wenn ich bei der if bedingung zb A oder z verwende meckert eclipse nicht. nur bei dem Zeichen \. Was mach ich falsch oder hab ich übersehen?
 
In Java (und vielen anderen Sprachen) gilt: der Backslash ist ein besonderes Zeichen, da er in Strings dazu genutzt wird, besondere Zeichen zu maskieren. Z.B. \n für eine neue Zeile...
Um einen Backslash zu machen, muss er zwei Mal geschrieben werden:
s1.charAt(i) != '\\'

Aber ehrlich gesagt habe ich noch icht ganz verstanden, was dein Code machen soll...

weil vermutlich wird
s2 = s1.replace('\\', '/');
das einfachere sein...
 
@Madman1209: Erklären, warum der Code nicht funktioniert, hättest ja dennoch können...
 
Hi,

@1668mib

Stimmt schon :) Hätte ich. Aber warum das Rad neu erfinden? Ausserdem ist doch deine Erklärung schon wunderbar ;)

VG,
Mad
 
nun ja bei uns in der uni gab es eine übungsaufgabe eines mediaplayers. der erste teil besteht. das wir einen Pfad übergeben bekommen, und wir diesen in der Methode getPathname säubern soll. Der Pfad könnte als Bsp so seien ///\////\\\musik\\\genre//\test sein.

Als ersten Schritt ändere ich alle \ in / da ich noch realtiv in C denke hab ichs jetzt au so gemacht wie in C. Hatte erst die 4 Vorlesung in Java hintermir.
Den zweiten teil hab ich soeben fertig geschrieben.

Aber noch eine Frage. Gibts da noch mehr Zeichen die so eine sonder behandlung brauchen bzw habt ihr vll da eine Tabelle?

und ein schnelles danke für die shcnelle antwort

Code:
 int j;
        String s1 = "";
        String s2 = "";
        j = s1.length();
          
        for(int i=0; i<j; i++)
            {
                if(s1.charAt(i) != '\\')
                    s2 += s1.charAt(i);
               else
                   s2 += '/';
            }
        
        s1="";
        int memo = 0;
        
        for(int i=0; i<j; i++) {
            
            if(s2.charAt(i) != '/') {
                s1 += s2.charAt(i);
                memo = 0;
            }
            else {
                if(memo == 0)
                    s1 += s2.charAt(i);
                    memo = 1;
                 }
            
        }
        return "";
    }
 
Zuletzt bearbeitet:
Es gibt eine Klasse File, die kann man sich für sowas gerne mal anschauen.

Ansonsten würde ich dir empfehlen: Frag Kommilitonen oder Übungsgruppenleiter/Tutoren usw... die Uni ist kein Einzelkämpferlehrgang. Außerdem kennen die dann auch die genaue Aufgabenstellung und wissen besser, was "erwartet" wird...

Weil es gibt so viele Möglichkeiten, das zu lösen, was du hier schreibst... die Aufgabenstellung wird vermutlich exakter sein.
 
danke werd ich mir mal ansehen.

ich werde das morgen auch gleich im prakitkum ansprechen. von der aufgabenstellung ist uns nur der methodennamen vorgeschrieben. wie wir es innerhalb lösen, das ist ja unsere aufgabe. der rest kommt dann stück für stück daszu

aber schonmal vielen dank
 
Die Aufgabenstellung zielt vermutlich darauf ab, sich mit Strings zu beschäftigen. Insofern würde ich denken, dass der TE das schon ganz richtig gehandhabt hat. Der Code zeigt ja auch typische Anfängeransätze, anhand derer man einige Konzepte illustrieren kann.

In der Praxis kann man das sicherlich mit Hilfe der Runtime einfacher und besser lösen bzw. würde mit einem anderen Designansatz überhaupt nicht in die Verlegenheit kommen.
 
@soares: Absolut, da stimme ich dir zu. Ein Grund, warum es bei so Dingen auch eher kontraproduktiv ist, in Foren nach Hilfe zu fragen.
 
Zurück
Oben