String split und replace geht nicht

0plan

Bekanntes Mitglied
Hallo, ich lese in einem Programm aus der CMD Computernamen im Netzwerk aus. Diese beginnen alle mit "\\". Da ich allerdings nur die Namen haben möchte, wollte ich den String splitten. Ich hab schon herrausgefunden das \\ in Java \\\\ gleich ist. Allerdings funktioniert es nicht.

Mein String sieht z.B. so aus \\PC1\\PC2\\PC3\\PC4\\ usw

So versuche ich es:

Java:
			String split[] = null;
			split = group.split("\\\\");
			
for(int i=0; i<split.length;i++){
    System.out.println(split[i]);
}

Wenn ich den String so splitte, bekom ich in der Console allerdings nach jedem PC Namen einen Zeilenumbruch. Weiss nicht woran das liegt.

Durch [group.replace("\\", "/"); funktionierts auch nicht, mit einem Slash vor den Rechner Namen könnte ich leben.

Die Ausgabe in der Konsole ist wie folgt:

PC1

PC2

PC3

anstatt

PC1
PC2
PC3

Bitte um Klärung, das macht mich wahnsinnig
 
Zuletzt bearbeitet:

Naaram

Mitglied
In Java werden in Strings Escape-Sequenzen mit \ eingeläutet. Also '\n' ist z.B. ein Zeilenumbruch und '\a' ein Piepser. Um ein Backslash hinzuschreiben schreibt man '\\'. Also probiere es doch mal mit "\\\\" als splitter.
 

0plan

Bekanntes Mitglied
Entschuldige, ich habe im splitter schon \\\\hatte mich vertippt. Mit \\\\ erhalte ich die ausgabe wie beschrieben.
 

0plan

Bekanntes Mitglied
super vielen dank, mit 8x \ klappts. Bis 6 x bin ich noch mit gegangen, danach hab ich mir schon gedacht das klappt eh nicht :p

Danke für die Hilfe
 

0plan

Bekanntes Mitglied
ich seh grade, nun ist bevor dem ersten string aber immer nach ein zeilenumbruch. Alle anderen sind weg jedoch ist es jetzt wie folgt:

---------------------------------
UMBRUCH
pc1
pc2
pc3
pc4
-------------------------

der index 0 im split array ist also ein Zeilenumbruch.
 
Zuletzt bearbeitet:
G

Gast2

Gast
Der Zeilenumbruch kommt durch [c]System.out.println[/c]. Nimm [c]System.out.print[/c]. Dann hast du keinen Zeilenumbruch. In dem Array split sind KEINE Zeilenumbrüche drin. Der erste Eintrag ist halt ein Leerstring ;)
 

chalkbag

Bekanntes Mitglied
du könntest auch einfach prüfen, ob du eine Leerzeile (spllit.length()==0) hast.
Diese willst dann natürlich nicht drucken.
 
M

mvitzATwork

Gast
Das liegt nunmal daran, dass dein String mit \\ anfängt und split dort das erste mal Splittet.

Mögliche Lösung:
Java:
...
String split[] = group.split("\\\\\\\\");
for(int i=0; i < split.length; i++) {
  if (split[i] != null && !split[i].equals("")) {
    System.out.println(split[i]);
  }
}
...
 

Naaram

Mitglied
Man kann die Probleme mit Google Guava (Bibliothek) generell vermeiden. Hier ein Beispiel:

Java:
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;

public static void main(String[] args) throws URISyntaxException {
    String group = "\\\\PC1\\\\PC2\\\\PC3\\\\PC4\\\\";
    System.out.println(group);
    String split[] = Iterables.toArray(Splitter.on("\\\\").omitEmptyStrings().split(group), String.class);
    for (int i = 0; i < split.length; i++) {
        System.out.println(split[i]);
    }
}
 

chalkbag

Bekanntes Mitglied
Man braucht doch nicht für alles gleich ein extra Framework, vor allem wenn es die Java Api sowieso schon kann.

Java:
String s = "\\pc1\\pc2\\pc3\\\\";
StringTokenizer strt = new StringTokenizer(s,"\\");
while(strt.hasMoreTokens()){
	System.out.println(strt.nextToken());
}
 

Naaram

Mitglied
Man braucht doch nicht für alles gleich ein extra Framework, vor allem wenn es die Java Api sowieso schon kann.

Sorry aber das ist doch totaler Käse. Ich meine natürlich will man nicht für jeden kleinen Use Case eine Bibliothek importieren, so dass man den Überblick verliert, aber man sollte auf jeden Fall gut getestete 3rd Party Bibliotheken nutzen um sich Arbeit zu sparen.

Ich programmiere ja auch nicht das HTTP Protokoll nach (was ich aber dank der o. G. Lebenseinstellung schon 100 mal gesehen habe) sondern benutze da eine HTTP Client Bibliothek.

Genau so finde ich es Wichtig, dass man sich neben der Java Standard Bibliothek in ein Paar bekannte Frameworks (neben Guava ist auch apache-commons-* ein Kandidat) einarbeitet, anstatt Arbeit zu machen, die 100 andere auch schon gemacht haben. Dies habe ich früher auch nicht gerne gemacht, aber mittlerweile glaube ich dass dies ein wichtiger Teil des allgemeinen Lernprozesses ist (genau so, wie das Wissen wann man ein Bibliothek nicht benutzen sollte).

Ich habe das Beispiel gebracht, um zu zeigen, das man das Spezielle Problem (Leere Zeile) durch die verwendung einer Bibliothek mit wenigen sehr gut lesbaren Zeilen lösen kann. Außerdem kann man sich bei der Bibliothek sicher sein, dass der Code von hunderten Nutzern getestet ist.


Es ist für mich auch ein großer Unterschied, ob ich den Code produziere:
Java:
public List<String> getPcNames(String pcNames) {
    List<String> result = new ArrayList<String>();

    StringTokenizer tokenizer = new StringTokenizer(pcNames, "\\\\");
    while (tokenizer.hasMoreTokens()) {
        String token = tokenizer.nextToken();
        if(!token.isEmpty()) {
            result.add(token);
        }
    }
    return result;
}

Einen Code der Kommentare bedarf um zu verstehen was da passiert. Ein Code der einiger Tests bedarf, damit ich mich sicher fühle. Einen Code bei dem ich leicht einen Fehler einbaue.

Oder einen Code wie diesen:
Java:
public List<String> getPcNames(String pcNames) {
    List<String> result = new ArrayList<String>();
    Iterables.addAll(result, Splitter.on("\\\\").omitEmptyStrings().split(pcNames));
    return result;
}

In einem großen Projekt ist Lesbarkeit alles, sonst kostet jedes Feature abartige Summen, und ich finde, dass das untere Beispiel viel einfacher Lesbar ist, als das obere. Das ist meiner Meinung nach das wichtigste hier.
 
G

Gast2

Gast
Um für eine kleine Sache (4 Zeilen Code) gleich eine 3rd Party lib zu bemühen find ich ist dann doch ein wenig mit Kanonen auf Spatzen zu schießen. Wenn ich weitere Klassen und Methoden aus der lib in einem größeren Umfang nutze macht das Sinn. Wenn es bei der einen einzige Methode bleibt nicht. Da hol ich mir unnötige Abhängigkiten rein und schleppe jede Menge Ballast rum der einfach nur unnötig ist. Natürlich muss er seine Implementierung testen. Aber da kommst du bei einer lib auch nicht drumrum wenn du es ordentlich machen willst.

Der Vergleich von einem HTTP Client hakt hier gewaltig da dies nicht mal eben in einem 3 Zeiler zu erledigen ist.

Grade in einem großen Projekt muss man sich überlegen welche Abhängigkeiten man in Kauf nimmt. Von Lizenzproblematiken mal gar nicht zu reden.

Und für einen Anfänger (was der TO wohl eindeutig ist, sonst hätter er das Problem nicht) ist deine Nutzung der Bibliothek wohl kaum leichter zu verstehen als es mal eben selber zu machen und evtl dabei noch was zu lernen.

Just my 2 cents
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
I String.split regex Frage Java Basics - Anfänger-Themen 2
S String split Java Basics - Anfänger-Themen 12
Dimax String Split Java Basics - Anfänger-Themen 2
S Methoden String: split Java Basics - Anfänger-Themen 5
MR._FIRE_Flower String.split("(") geht nicht Java Basics - Anfänger-Themen 4
C Gleichung String Split Java Basics - Anfänger-Themen 6
G String.split(".") Java Basics - Anfänger-Themen 3
A String Split Java Basics - Anfänger-Themen 4
K How to split my String Java Basics - Anfänger-Themen 2
L String array mit split füllen Java Basics - Anfänger-Themen 14
P CSV Datei in String Array -> Split -> New Array Java Basics - Anfänger-Themen 2
vandread String.split("\\") führt zu Error?! Java Basics - Anfänger-Themen 8
N String [][] mit .split Java Basics - Anfänger-Themen 13
B Array fehler bei string split Java Basics - Anfänger-Themen 4
L Methoden String.split nach Absätzen? Java Basics - Anfänger-Themen 8
S Split String für | Java Basics - Anfänger-Themen 2
R String Delimiter (Split) einlesen Java Basics - Anfänger-Themen 9
T String Split? Java Basics - Anfänger-Themen 10
F String Split Problem mit "|" Java Basics - Anfänger-Themen 3
D String.split(...) Java Basics - Anfänger-Themen 4
J String split-Funktion und Integer Java Basics - Anfänger-Themen 13
S String - Gegenteil von Split? Java Basics - Anfänger-Themen 2
D String.split(".") geht nicht? Java Basics - Anfänger-Themen 3
Eldorado Fehler bei String.split Java Basics - Anfänger-Themen 4
S String Split ohne Zeichen abzuschneiden Java Basics - Anfänger-Themen 7
M String splitten mit split() Java Basics - Anfänger-Themen 4
S String split array.length Problem Java Basics - Anfänger-Themen 3
B String ordentlich trennen (regex, split())? Java Basics - Anfänger-Themen 11
J Problem mit Split und String Java Basics - Anfänger-Themen 3
M String.split() und StringTokenizer Java Basics - Anfänger-Themen 2
ARadauer String.split -> unterschiedliche längen Java Basics - Anfänger-Themen 2
I <String>.split()? Java Basics - Anfänger-Themen 2
I String, Split, match, wo liegt mein Fehler ? Java Basics - Anfänger-Themen 4
S Worthäufigkeiten zählen nach String.split() Java Basics - Anfänger-Themen 5
F String split-Methode Java Basics - Anfänger-Themen 12
Q String split bei "" Java Basics - Anfänger-Themen 4
G Problem mit String.split(""); Java Basics - Anfänger-Themen 2
C Collection in Verbindung mit String.split speicherlastig Java Basics - Anfänger-Themen 20
C String.split("") einzelne Positionen abfragen Java Basics - Anfänger-Themen 10
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
O String mit split zerlegen Java Basics - Anfänger-Themen 6
G Split String Java Basics - Anfänger-Themen 2
G Habe bei String kein split()? Java Basics - Anfänger-Themen 7
B try & catch Problem mit Exception bzw String.split() Java Basics - Anfänger-Themen 5
G Brauche Hilfe, mit String.split() Java Basics - Anfänger-Themen 15
G String Split Java Basics - Anfänger-Themen 12
J Probleme bei String.split Java Basics - Anfänger-Themen 6
F string.split und regAusdruck Java Basics - Anfänger-Themen 4
S String.split("|") Java Basics - Anfänger-Themen 4
O eine frage/problem zu string.split() Java Basics - Anfänger-Themen 2
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
J String Filter Java Basics - Anfänger-Themen 5
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D 2D Char Array into String Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
I Zerlegen von String Java Basics - Anfänger-Themen 3
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
I String Java Basics - Anfänger-Themen 4
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
HolyFUT Input/Output Leerzeichen aus String entfernen - klappt nicht! Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben