meez hat gesagt.:Du must \ maskieren...
Ab 1.4 gibts auch noch die replacAll Methode:
Code:String s1 = deinstring String s2 = s1.replaceAll("‘\\", "/" );
String windowsPfad = "C:\\Programme\\MeinProgramm";
String unixPfad = windowsPfad.replaceAll("\\\\", "/");
String s1 = "C:\Pfad\Ordner\";
String s2 = s1.replaceAll ("\", "/");
String s2 = s1.replaceAll ("\\", "/");
sky80 hat gesagt.:Bist Du Dir sicher, dass Du den Code 1:1 kopiert und bei dir eingefügt hast???
String logname = "C:\Pfad\Ordner\";
String newlogname = logname.replaceAll("\", "/");
String s1 = "C:\\Pfad\\Ordner\\";
String s2 = s1.replaceAll ("\\\\", "/");
String logname = "C:\Pfad\Ordner\";
Bert Brenner hat gesagt.:Wenn du etwas machst wie:
String s1 = "C:\\Pfad\\Ordner\\";
Dann enthällt der String s1 "C:\Pfad\Ordner\"
weil ein Backslash maskiert werden muss.
Der Backslash ( \ ) hat nur im Java-Quelltext eine besondere Bedeutung. Wenn du eine externe Quelle für Strings hast, dann brauchst du eigentlich den Backslash nicht doppelt angeben. Es sei denn, die externe Quelle wird wie der Quelltext vor dem Einlesen noch ge'parse't, was aber bei .ini-Dateien nicht der Fall ist.Louis2 hat gesagt.:Aber der String aus der .ini den ich kriege sieht "C:\Pfad\Ordner\"; so aus.
Nun muss ich jedes mal noch 1 "\" hinzufügen und wie geht das?
String unixpfad = dosPfadVonINIDatei.replace('\\', '/');
C:PfadOrdner
[EmailClient]
.
.
LogLocation=C:\Pfad\Ordner
Persuader hat gesagt.:Habe heute Fragen über Fragen...
Ich habe einen String, welcher einen Baclslash ("\") enthält und möchte diesen Backslash in einen normalen Slash ("/") umwandeln. Gibt es dazu irgend eine spezielle funktion?
str2 = str1.replace('\\', '/');
public class test {
public static void main(String[] args) {
String str1 = "C:\\pfad\\unterpfad\\datei"; // So sieht dein String aus
System.out.println(str1); // Wie du siehst, wird bei der Ausgabe nur ein \ angezeigt, obwohl der String zwei \ in Java enthält
String str2 = str1.replace('\\', '/'); // Jeder \ wird durch ein / ersetzt
System.out.println(str2); // Und alles hat funktioniert ...
}
}
Peter@Pan hat gesagt.:String.replace("\\","/") funktioniert nicht weil der der String nunmal "C:\send" ist und nicht "C:\\senden" :!:
Bert Brenner hat gesagt.:String.replace("\\","/") sollte doch gehen.
String aString = "c:\\Hallo";
quote]
Und genau hier liegt das Problem der String besteht in diesem Fall aus c:\hallo und nicht aus c:\\hallo.
Erstellt ihr euch nocht mal ne File in der c:\hallo steht.
Versucht dann die Zeile auszulesen und macht dann auf den String replaceAll("\\","/");
norman hat gesagt.:Das Problem liegt wo anders, glaube ich
in datei.txt steht z.B.:
C:\Hallo
wenn du in java in einen String den Inhalt von datei.txt speichern willst, enthält der String:
C:Hallo
Roar hat gesagt.:nö, im String steht natürlich auch C:\Hallo
norman hat gesagt.:.....
wenn du in java in einen String den Inhalt von datei.txt speichern willst, enthält der String:
C:Hallo
String s= getPathFromFile();
System.out.println(s); // Ausgabe= C:\send
// 1. Variante:
s=s.replace('\\', '/');
System.out.println(s); // Ausgabe= C:/send
// 2. Variante:
s=s.replaceAll("\\\\", "/");
System.out.println(s); // Ausgabe= C:/send
String s1 = "C:\\Pfad\\Ordner\\";
String s2 = s1.replace('\\','/');
System.out.println(s1);
System.out.println(s2);
Sky hat gesagt.:Hier zwei Varianten, die funktionieren:
Code:String s= getPathFromFile(); System.out.println(s); // Ausgabe= C:\send // 1. Variante: s=s.replace('\\', '/'); System.out.println(s); // Ausgabe= C:/send // 2. Variante: s=s.replaceAll("\\\\", "/"); System.out.println(s); // Ausgabe= C:/send
Gast hat gesagt.:Vielleicht hängt es davon ab, wie der String eingelesen wird!
Ich habe nämlich exact das gleiche Problem und lese den String aus der Datei mithilfe der Klasse PropertyRessourceBundle.
Dann enthält der ausgelesene String überhaupt gar keine \ mehr.
Replace funktioniert nicht und auch die Variante mit dem CharArray geht nicht!
//Im Testdokument steht der Pfad C:\send
BufferedReader in = new BufferedReader(new FileReader("E:\\Textdokument.txt"));
String buffer = null;
while((buffer = in.readLine()) != null)
{
char test[] = buffer.toCharArray();
char sep = '\\';
for(int i = 0; i < test.length; i++)
{
if(test[i] == sep)
{
test[i] = '/';
}
}
//um zu gucken ob es geklappt hat
System.out.println(test);
System.err.println(buffer);
}
Gast hat gesagt.:Bin gerade dabei eine Klasse zu schreiben, die von PropertyRessourceBundle erbt zu schreiben, die das dann nicht mehr entfernt!
Poste ich dann, vielleicht kann's ja jemand gebrauchen!
das wird nix bringen, PropertyResourceBundle benutzt Properties zum einlesen. wen ndann müsstest du ne eigene Properties.load() methode implementieren, und dein eignes resourcebundle dazu zwignen die zu benutzen.Gast hat gesagt.:Bin gerade dabei eine Klasse zu schreiben, die von PropertyRessourceBundle erbt zu schreiben, die das dann nicht mehr entfernt!
Poste ich dann, vielleicht kann's ja jemand gebrauchen!
warum fummeln die benutzer des programms in den dateien rum? is nich sehr benutzerfreundlich. ich dachte in dem satz eigentlich an die programmierer.Anonymous hat gesagt.:Wie kann ich annehmen, daß der User, der mein Programm benutzen wird klug ist? Schließlich hat er auch Windows gekauft!
:shock: Klingt wie eine versteckte Beleidigung.Gast hat gesagt.:Wie kann ich annehmen, daß der User, der mein Programm benutzen wird klug ist? Schließlich hat er auch Windows gekauft!