Quote Originariamente inviata da andbin Visualizza il messaggio
Il problema non è il primo argomento (cioè "/"). Lo slash / NON è un carattere "speciale" nelle regex. Il problema è il secondo argomento, perché sui Windows File.separator vale \ (come literal "\\") e il back-slash è un carattere speciale nelle regex e anche nell'argomento di sostituzione di replaceAll (vedi javadoc).

Potresti usare il replace(CharSequence target, CharSequence replacement) che non usa le regex. Ma comunque avresti il problema del caso "\\/" che non risolverebbe.

Una cosa più furba sarebbe fare un replace di tutte le occorrenze di una/più "\" e/o "/" per "aggiustarle" al corretto separator per il S.O.
codice:
String str2 = str.replaceAll("[\\\\/]+", Matcher.quoteReplacement(File.separator));

Questo, tra l'altro, funzionerebbe pure sugli Unix-like nel senso che se avessi un path non ben messo tipo:

"/tmp/\\prova\\hello.txt" (qui è scritto letterale, con \ raddoppiato)

lo sistemerebbe comunque bene a "/tmp/prova/hello.txt".
in effetti non ci avevo pensato.
grazie!!