CSV-Problem

comason

Grünschnabel
Ich glaub ich hab mich undeutlich ausgedrückt... ich versuch mal, das neu zu formulieren :>

Also:

Bsp-Zeile:
Code:
1-"blah-blah"-blub-010-blub-blub-101-221

Diese Zeile soll anhand von " - " gesplittet werden.
Wenn das Split-Zeichen jedoch in einem Text "" vorkommt, soll der Text samt Splitzeichen übernommen werden.
Also "blah-blah" nicht in [blah, blah] aufsplitten.
Bis auf die Texte mit Trennzeichen soll alles normal gesplittet werden.

Edit: Achja: Das Textzeichen soll variabel sein... :s Also nicht fest auf " " eingestellt...
 
Zuletzt bearbeitet:
Ich glaub ich hab mich undeutlich ausgedrückt... ich versuch mal, das neu zu formulieren :>

Also:

Bsp-Zeile:
Code:
1-"blah-blah"-blub-010-blub-blub-101-221

Diese Zeile soll anhand von " - " gesplittet werden.
Wenn das Split-Zeichen jedoch in einem Text "" vorkommt, soll der Text samt Splitzeichen übernommen werden.
Also "blah-blah" nicht in [blah, blah] aufsplitten.
Bis auf die Texte mit Trennzeichen soll alles normal gesplittet werden.

Edit: Achja: Das Textzeichen soll variabel sein... :s Also nicht fest auf " " eingestellt...
 
Zuletzt bearbeitet:
Hallo!

Schau mal hier:
Code:
 /**
  * 
  */
 package de.tutorials;
 
 import java.util.Arrays;
 
 /**
  * @author Tom
  * 
  */
 public class StringReplaceAndSplitExample {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		String s0 = "aaa-\"bbb\"-ccc-ddd";
 		String s1 = "aaa*\"bbb\"*ccc*\"ddd\"";
 		String s2 = s0 + s1;
 
 		System.out.println(Arrays.asList(s0.replace("\"", "").split("-")));
 		System.out.println(Arrays.asList(s1.replace("\"", "").split("\\*")));
 		System.out.println(Arrays.asList(s2.replace("\"", "").split("\\*|-")));
 
 	}
 
 }

Gruß Tom
 
Hallo Thomas!

Leider ist die Lösung von dir noch nicht optimal, da in einem Text auch die Trennzeichen enthalten sein dürfen sollen ;)

Bsp.:
Code:
public class SplitTest {

    public static void main(String[] args) {
 		String s0 = "aaa-\"bb-b\"-11-dddd";
 
 		System.out.println(Arrays.asList(s0.replace("\"", "").split("-")));
    }
}

Hat das Ergebnis:
Code:
[aaa, bb, b, 11, dddd]

Sollte jedoch liefern:
Code:
[aaa, bb-b, 11, dddd]
 
Ich hab auch mal folgendes ausprobiert
Code:
public class CSVmitTextzeichen {

    public static void main(String[] args) {
         
        // Trennzeichen
        String s_trz = ";";
        
        String csv = "1;\"Test;Test\";\"Test2\";999;Test;9999";
                
        String[] test = csv.split("(?![\\d\"])"+s_trz+"(?=[\\d\"])");
                
        for(int i=0; i<test.length; i++) {
          System.out.println(test[i]);
        }
        
    }
}

Bringt folgende Ausgabe:
Code:
1
"Test;Test"
"Test2"
999;Test
9999

Sollte aber folgende Ausgabe Liefern:
Code:
1
"Test;Test"
"Test2"
999
Test
9999
 
Hallo!

Wenn du alle Spalteneintraege "quotest" funktioniert folgendes:
Code:
/**
  * 
  */
 package de.tutorials;
 
 import java.util.Arrays;
 
 /**
  * @author Tom
  * 
  */
 public class StringReplaceAndSplitExample {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		String s = "\"aaa\"-\"bb-b\"-\"11-dddd\"";
 
 		System.out.println(s);
 		System.out.println(
 				Arrays.asList( // Pretty Printing...
 		    		    s.replaceAll("^\"|\"$", "") // Delete leading and trailing "
 		    		    .split("\"-\""))); // split line along the pattern "-"
 
 	}
 
 }
Ausgabe:
Code:
  "aaa"-"bb-b"-"11-dddd"
 [aaa, bb-b, 11-dddd]

Gruss Tom
 
Ich glaub ich hab mich undeutlich ausgedrückt... ich versuch mal, das neu zu formulieren :>

Also:

Bsp-Zeile:
Code:
1-"blah-blah"-blub-010-blub-blub-101-221

Diese Zeile soll anhand von " - " gesplittet werden.
Wenn das Split-Zeichen jedoch in einem Text "" vorkommt, soll der Text samt Splitzeichen übernommen werden.
Also "blah-blah" nicht in [blah, blah] aufsplitten.
Bis auf die Texte mit Trennzeichen soll alles normal gesplittet werden.

Edit: Achja: Das Textzeichen soll variabel sein... :s Also nicht fest auf " " eingestellt...
 
Zuletzt bearbeitet:
Zurück