Java split Weg..?
Dies ist die Eingabe als string:
"C:\jdk1.6.0\bin\program1.java"
Brauche ich als Ausgabe:
Path-->C:\jdk1.6.0\bin\
file--->program1.java
extension--->.java
Watch out "\" char. Ich erhielt leicht Ausgabe für "/".
Welchen code hast du bisher?
Nach Ihrem Kommentar zu @Kurt-Lösung sind die Hausaufgaben. Fühlen Sie sich frei, um diese zu entfernen tag.
Es ist nicht eine Hausaufgabe. Ich splited dies mit indexOf() und subString(). Ich brauche nur, warum wir nicht in der Lage zu dieser split mit split()...? Noch habe ich keine Antwort bekomme.
tag entfernt.
Danke.
Nach Ihrem Kommentar zu @Kurt-Lösung sind die Hausaufgaben. Fühlen Sie sich frei, um diese zu entfernen tag.
Es ist nicht eine Hausaufgabe. Ich splited dies mit indexOf() und subString(). Ich brauche nur, warum wir nicht in der Lage zu dieser split mit split()...? Noch habe ich keine Antwort bekomme.
tag entfernt.
Danke.
InformationsquelleAutor yuvaraj | 2010-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Datei - Klasse gibt Ihnen alles, was Sie brauchen:
EDIT: Danke Dave für die Feststellung, dass String.lastIndexOf wird -1 zurück, wenn die Datei.getName nicht enthalten '.'.
Wenn Sie versuchen, sich selbst zu begrenzen, um String.split, dann beachten Sie, wie Sie Kurt ist mit
lastIndexOf()
File f = new File( "C:\\jdk1.6.0\\doc\\readme" );
. Was macht der code in so einem Fall?Fehl. String.lastIndexOf wird -1 zurück 😉
Deine Antwort ist wirklich hilfreich. Tut mir Leid, diese Fragen wieder. warum wir nicht in der Lage, aufgeteilt mit string.split(regex r)..?
InformationsquelleAutor Kurt Kaylor
Erwägen Sie die Verwendung einer bestehenden Lösung, anstatt Ihre eigenen Rollen und die Einführung von mehr code, das getestet werden muss. FilenameUtils aus Apache Commons IO ist ein Beispiel:
http://commons.apache.org/proper/commons-io/javadocs/api-2.4/org/apache/commons/io/FilenameUtils.html
Ich, persönlich, neigen dazu, vorsichtig zu sein von utility-Klassen; Sie klatschen funktionale, nicht-Objekt-Orientierten Programmierung. Das Apache-Commons-Paket sollte erweitert
File
direkt zu verbessern, Ihr Verhalten, wie ich gezeigt habe.Jarvis: ich kann nicht bestreiten, dass es eine funktionale API und am Ende des Tages ist es bis zu den persönlichen Geschmack. Für mich kommt es auf die Vorteile der Wartungsfreundlichkeit über API-Implementierung.
Nichts hindert Sie mit String.split(), aber als Dave Jarvis reagierte auf Ihre post oben, es ist eher beschränkt und verrückt Ansatz. Keine der anderen Lösungen, die auf dieser Seite sind mehr lebensfähig und haltbar.
Ich wünschte, ich könnte Stimmen, zweimal! Sie gerade gespeichert haben mich vielleicht 30 Minuten! Ich Stimme mit Dave in diesem Fall. Hier eine utility-Klasse mehr Sinn macht als die Verlängerung der Klasse. Stell dir vor, wenn Apache extended-Datei-Dienstprogramm Zwecke, und einigen anderen Firmen erweitern, Datei-Dienstprogramm Zwecke, aber dann müssen Sie Zugriff auf die Funktionalität von beiden diese utility-Klassen. Sie wäre zu gefährlich werfen Sie Ihre Apache-Datei zurück zu java.lang.Datei, um die Funktionalität verwenden, die von der anderen Firma-Datei utility-Klasse. Und Umgekehrt, wenn Sie brauchen, um anschließend an einigen der Apache-Spielereien wieder.
InformationsquelleAutor Rhysyngsun
Seit Java
File
Klasse unterstützt keine Sondierung für die Erweiterung, ich schlage vor, Sie erstellen eine Unterklasse derFile
bietet diese Möglichkeit:Nun ersetzen Sie einfach Ihre version der Datei für die Java-version und, wenn Sie kombiniert mit Kurt ' s Antwort, gibt Sie alles, was Sie brauchen.
Beachten Sie, dass die Verwendung einer Unterklasse ist ideal, denn wenn Sie wollte, ändern das Verhalten (wegen einem anderen Betriebssystem mit einer anderen extension delimiter token) müssen Sie nur aktualisieren einer einzelnen Methode und Ihre gesamte Anwendung weiter zu arbeiten. (Oder, wenn Sie brauchen, um einen Fehler zu beheben, wie Sie versuchen zu führen
str.substring( -1 )
.)In anderen Worten, wenn Sie extrahieren Sie eine Datei-Erweiterung in mehr als einem Ort in Ihrer code-Basis, Sie haben einen Fehler gemacht.
Weiter zu gehen, wenn Sie wollte, ganz Abstrakt das wissen von der Art der Datei (da einige Betriebssysteme möglicherweise nicht verwenden Sie den
.
separator), könnten Sie schreiben:Ich würde dies eine viel robustere Lösung. Dies würde sich nahtlos ermöglichen, indem eine erweiterte Datei-Typ-Erkennung Mechanismus (Analyse von Inhalt der Datei-Typ ermitteln), ohne änderung des aufrufenden Codes. Beispiel:
Wenn ein Benutzer gespeichert "myfile.png" als "myfile.txt" das würde das Bild noch bearbeitet werden, weil die advanced-version (hier nicht gezeigt) Aussehen würden, für die "PNG" - Markierung, die beginnt jeden einzelnen PNG-Datei in die (cyber) Welt.
Ich bin nicht in der Lage zu split den String mit String.split() mit "\\" als Trennzeichen. Die gesamte Zeichenfolge wird wieder das erste element des Arrays. Ich weiß nicht warum.. Könnte u pls den code schreiben, um für, dass..?
Was ich sagen will ist, dass
String.split()
ist nicht die richtige Art und Weise zu schreiben, die diese Funktionalität. Sollten Sie wirklich verwendenindexOf()
wie schon gesagt wurde.InformationsquelleAutor Dave Jarvis
Müssen Sie zum Ausgleich für die doppelte Schrägstriche kehrte im Weg (wenn es wurde programmgesteuert erzeugt).
InformationsquelleAutor Rahul Jawale