Split mit ; und "

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich habe folgende Zeile:

"1";"2";"Teilnehmer; Hans";"50"

und möchte diese gerne in ein Array zerlegen. Dazu könnte ich die Funktion split nutzen. Das Problem hier ist jedoch, dass das Trennzeichen (;) auch im Text vorkommen kann (siehe oben) und er dann kein 4er Array sondern ein 5er erzeugt. Kann man beim Split sowas berücksichtigen oder wie gehe ich hier vor?

Danke
 
S

Spacerat

Gast
Hallo

Wenn das 'ne Javazeile sein soll, wird die eh nicht kompiliert. Strings sind keine Anweisungen und können deswegen nich alleine in einer Zeile bzw. Anweisungsblock stehen. Die Methode "split()" ist (in diesem Fall!) nur auf Strings und nicht auf Programmzeilen anwendbar. Wenn ich irgendwas falsch interpretiert haben sollte, könnte es daran liegen, das da so alleine eine Zeile irgendwo aus dem Zusammenhang gerissen im Raum steht. Ein bissl' Code wäre nicht schlecht.

mfg Spacerat
 

Niki

Top Contributor
Ist ein bisschen dreckig, aber es funktioniert. Du musst nach ";" splitten und beim ersten und letzten Element im Array das erste bzw. das letzte Zeichen entfernen:
Code:
        String[] sArr = s.split("\";\"");
        sArr[0] = sArr[0].substring(1);
        String letztesElement = sArr[sArr.length-1];
        sArr[sArr.length-1] = letztesElement.substring(0, letztesElement.length()-1);
 

Leroy42

Top Contributor
Niki hat gesagt.:
Du musst nach ";" splitten und beim ersten und letzten Element im Array das erste bzw. das letzte Zeichen entfernen...

... genau dann wenn es sich um ein Gänsefüßchen handeln sollte.

Hoffe, so ist das jetzt nicht mehr dreckig! :cool:
 

Ebenius

Top Contributor
Ich würde's eher so machen:

Code:
  static final char QUOTE = '"';
  static final char DELIMN = ';';

  private static String[] splitQuoted(String in) {
    final List<String> result = new LinkedList<String>();

    boolean quoted = false;
    int left = 0;
    char prevChar = '\u0000';
    for (int i = 0; i < in.length(); i++) {
      final char c = in.charAt(i);
      switch (c) {
      case QUOTE:
        quoted = !quoted;
        if (i == left) {
          left++;
        }
        break;
      case DELIMN:
        if (!quoted) {
          result.add(in.substring(left, prevChar == QUOTE ? i - 1 : i));
          left = i + 1;
        }
      }
      prevChar = c;
    }

    if (quoted) {
      throw new IllegalArgumentException("open quote");
    }

    int i = in.length();
    result.add(in.substring(left, prevChar == QUOTE ? i - 1 : i));
    final String[] array = result.toArray(new String[result.size()]);
    return array;
  }

Die IllegalArgumentException sollte man ggf. durch etwas besseres austauschen.

Grüße, Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
SaschaMeyer Arbeitet String.split falsch? Allgemeine Java-Themen 4
R Variablen String mit split-Funktion aufteilen Allgemeine Java-Themen 7
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
S Variablen split-Funkton mit zwei Variabeln verwenden? Allgemeine Java-Themen 4
OnDemand String Split Pipe Allgemeine Java-Themen 2
S String split mit spez. Regexp Allgemeine Java-Themen 2
L Split String Level 100 Allgemeine Java-Themen 2
K String split Methode Allgemeine Java-Themen 20
Y Kleine Frage zu String.split Allgemeine Java-Themen 3
M split("("); Problem Allgemeine Java-Themen 4
A String.split() funktioniert nicht richtig Allgemeine Java-Themen 4
Q String Split() Allgemeine Java-Themen 46
AMStyles Split bei hälfte Allgemeine Java-Themen 3
O split mit einem ODER mehrere Tabulatoren oder Leerzeichen Allgemeine Java-Themen 6
A Split, Scanner, StringTokenizer oder PatternMatching für flexibles Dateieinlesen? Allgemeine Java-Themen 2
S indize statt split() Allgemeine Java-Themen 10
D String split() ist unlogisch Allgemeine Java-Themen 12
V Problem mit der String.split() Allgemeine Java-Themen 3
R Sting.split() was mache ich falsch? Allgemeine Java-Themen 5
Daniel_L Frage zu split() und dem Trennzeichen. Allgemeine Java-Themen 10
C String split Allgemeine Java-Themen 3
GilbertGrape Frage zu split Allgemeine Java-Themen 2
C "/" in String.split()-->Illegal escapesequence Allgemeine Java-Themen 5
G split() mit komma/punkt funktioniert nicht Allgemeine Java-Themen 16
W string.split("") warum funzt des net? Allgemeine Java-Themen 5
T String.split() - viel zu langsam Allgemeine Java-Themen 9
G Split String Array bringt Fehlermeldung Allgemeine Java-Themen 7
P split() und ich versteh die Welt nicht Allgemeine Java-Themen 2
O Split methode tut bei Zeichen "\", "\\" Allgemeine Java-Themen 7
foobar Split Int Allgemeine Java-Themen 4
R String.split - ich steh auf dem Schlauch. Allgemeine Java-Themen 3
V Probleme mit String.Split :/ Allgemeine Java-Themen 2
I Split aus "JBuilder 2005" Allgemeine Java-Themen 15
B String.split() --- Java1.3 Allgemeine Java-Themen 10
K String.split nachbauen Allgemeine Java-Themen 7
P String.split will nicht Allgemeine Java-Themen 3
N Split -> IF-String vergleich Allgemeine Java-Themen 5
S Seltsames Verhalten von split() Allgemeine Java-Themen 3
P string.split() & RegEx Allgemeine Java-Themen 3
G Alternative zu split() Allgemeine Java-Themen 3
A Split() - Methode und java.util.regex.* Allgemeine Java-Themen 2
M Pattern, Matcher, Split Allgemeine Java-Themen 2
D split(".") funktioniert net Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben