Alternative zu replaceAll (jdk < 1.4)

  • Themenstarter Themenstarter Persuader_Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
P

Persuader_Guest

Gast
Wir verwenden in der Schule noch ein altes JDK 1.3, jedoch benötige ich dringend die Methode replaceAll, welche aber erst ab Version 1.4 verfügbar ist um einen "\" in einen "/" umzuwandeln...
Kann mir jemand dringend helfen, wie ich das umgehen könnte?
 
Das Problem kenn ich 😉

Code:
    public static String replaceAll(String text, String substitute, String replacement) {
        int i; 
        while ((i = text.indexOf(substitute)) != -1) {
            text = text.substring(0, i) + replacement +
                    text.substring(i + substitute.length());
        }
        return text;
    }

Grüße,
Mick
 
Hi,

wenn Du nur einzelne Zeichen ersetzen willst, sollte es da gute alte

Code:
String.replace(char old, char new)

tun.
 
Ok, also sollte

Code:
    String substitute = "\\\\";
    String replacement = "/";
    public static String replaceAll(String choosenFilePath, String substitute, String replacement) {
      int i;
      while ((i = choosenFilePath.indexOf(substitute)) != -1) {
         choosenFilePath = choosenFilePath.substring(0, i) + replacement +
         choosenFilePath.substring(i + substitute.length());
      }
    return choosenFilePath;
    
    }
funktinieren?

Tuts aber irgendwie nicht... und wenn ich nach "return choosenFilePath" ein "System.out.println( choosenFilePath );" reinhaue sagt er mir "unreachable statement"... 🙁
 
du kannst nicht nach einem return statement noch weiter befehle schreiben. Bei return wird die Methode verlassen !
D.h. das System.out.println() muss in die aufrufende Methode !
 
ach ne. wie soll das denn auch ausgegeben werden? anch einem return ist die methode zuende
 
Bin ne java-/programmier-niete sorry 😉

Aber ich krieg das irgendwie einfach nicht hin, muss aber in 2 stunden damit fertig sein.... jedenfalls mein code sieht so aus:

Code:
    public static void playAudio() {
       
      File audioFilePath = new File( choosenFilePath );
   
        try {
          AudioInputStream audioInputStream = AudioSystem.getAudioInputStream( audioFilePath );
          AudioFormat af     = audioInputStream.getFormat();
          int size           = (int) (af.getFrameSize() * audioInputStream.getFrameLength());
          //long lenght         = audioInputStream.getMicrosecondLength();  
          byte[] audio       = new byte[size];
          DataLine.Info info = new DataLine.Info(Clip.class, af, size);
          audioInputStream.read(audio, 0, size);
          Clip clip = (Clip) AudioSystem.getLine(info);
          clip.open(af, audio, 0, size);

              System.out.print( "File to play: " );
              System.out.println( choosenFilePath );
              clip.start();

        } catch(Exception e) { e.printStackTrace(); }

    }
Nun ist die Variable choosenFilePath aber noch im format C:\irgendwas\irgendwas.wav und soll halt umgewnandelt werden in C:/irgendwas/irgendwas.wav aber ich schaff das einfach nicht...
Wo müsste ich denn das ganze replaceAll-Zeugs anwenden damit das funktioniert? 🙁

choosenFilePath muss ja noch vor der dritten zeile umgewandelt werden...
 
Warum machst Du es nicht einfach so
Code:
String path = path.replace('\\','/');
?
 
akira hat gesagt.:
Warum machst Du es nicht einfach so
Code:
String path = path.replace('\\','/');
?
weils damit irgendwie auch nciht klappt

habe gelesen mit
choosenFilePath = choosenFilePath.replace('\\\\','/');
solls gehen aber das hat auch nich geklappt 🙁
 
Code:
String file="C:\\irgendwas\\irgendwas.wav";
String endFile = "C:/irgendwas/irgendwas.wav";
String s = file.replace('\\','/');
System.out.println(s.equals(endFile));
ergibt bei mir true
 
mit

Code:
choosenFilePath = choosenFilePath.replace('\\\\','/');

ersetzt Du auch ein \\ durch /
wenn Du \ durch / ersetzen willst genügt ein Aufruf mit \\

war das jetzt verwirrend? ???:L

Grüße,
Mick
 
deathbyaclown hat gesagt.:
Code:
String file="C:\\irgendwas\\irgendwas.wav";
String endFile = "C:/irgendwas/irgendwas.wav";
String s = file.replace('\\','/');
System.out.println(s.equals(endFile));
ergibt bei mir true
hmmmm ja dann scheint es wohl doch zu klappen.
kompilieren funktioniert dann ja auch problemlos, doch wenn ich die funktion im progamm starte erscheint folgende meldung:

Exeption occured during event dispatching:
java.lang.NullpointerExeption at blablablabla
 
deine NullPointer hat aber mit dem replace code nichts zu tun, das ist dann wohl n andere fehler in deinem code.
 
Ahhh ich habe gerade bemerkt, dass Problem ist ein anderes... \ wird richtig durch / ersett aber er kann denn neuen String danach irgendwie nicht richtig verarbeiten...
Wenn ich nun
System.out.println( choosenFilePath );
mache sagt der mir:
c:/datei.wav

doch abspielen kann ich das File danach nicht (oben genannte fehlermeldung, KEIN syntax-error)

Wenn ich aber direkt im Code definiere
String choosenFilePath = "c:/datei.wav";
dann kann er die datei abspielen...

woran kann das liegen?

abspielen tu ich die datei so:

Code:
File audioFilePath = new File( choosenFilePath );
   
        try {
          AudioInputStream audioInputStream = AudioSystem.getAudioInputStream( audioFilePath );
          AudioFormat af     = audioInputStream.getFormat();
          int size           = (int) (af.getFrameSize() * audioInputStream.getFrameLength());
          byte[] audio       = new byte[size];
          DataLine.Info info = new DataLine.Info(Clip.class, af, size);
          audioInputStream.read(audio, 0, size);
          Clip clip = (Clip) AudioSystem.getLine(info);
          clip.open(af, audio, 0, size);
                                        
              // PLAY FILE
              System.out.println("Clip wird gestartet\n");
              clip.start();

 
        } catch(Exception e) { e.printStackTrace(); }
wie ja schon weiter oben erwähnt...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben