CSV-Problem

teppi hat gesagt.:
Dann musst du dich mal mit regulären Ausdrücken beschäftigen.


Naja ich habs mal so probiert:

Code:
        String s_trz = ";";
        String s_txt = "*";
        
        String csv = "1;*Test;Test*;*Test2*;999;Test;9999";
        
        
        String[] test = csv.split("(?![\\d"+s_txt+"])"+s_trz+"(?=[\\d"+s_txt+"\"])");
                
        for(int i=0; i<test.length; i++) {
          System.out.println(test[i]);
        }

Aber das bringt auch nicht das gewünschte Ergebnis...
Mit dieser Lösung ist man gezwungen, JEDEN Text in Textzeichen zu setzen, aber die Textzeichen sind ja nur dann zu verwenden, wenn ein TRENNzeichen darin vorkommt...
 
Hab nochmal ein bissl rumgespielt und folgendes ist dabei rausgekommen:

Code:
        String s_txt = "*";
        String s_trz = ";";
        
        String csv = "blah;*aaa;bbb*;*blah*;blah;*ccc;ddd*";
        
        String[] test = csv.split("\\"+s_trz);
        Vector v_final = new Vector();
        for(int i=0; i<test.length; i++) {
          if (i+1 <= test.length) {
	          if (test[i].startsWith(s_txt) && test[i+1].endsWith(s_txt)) {
	              v_final.add(test[i] + s_trz + test[i+1]);
	              i++;
	          } else {
	              v_final.add(test[i]);
	          } 
          } 
        }
        
        for (int j = 0; j<v_final.size(); j++) {
            System.out.println(v_final.get(j).toString());
        }

Ist zwar nicht sehr elegant, aber eine andere Lösung fällt mir nicht ein.
Wenn wer ne Idee hat -> melden :)
 
Zurück