2012-03-29 6 views
0

hey ich habe eine Zeichenfolge als solche:Format String aus einem Rohr getrennten Zeichenfolge

357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC 

ich die Zahlen direkt vor dem ersten PIPE delimter nehmen will (von links nach rechts zu lesen)

und ersetzen dass ein Teil der Zeichenfolge durch eine andere Zeichenfolge ich habe ..

als ich eine neue konstruierte Saite mit dem Ersatz ...

zum Beispiel haben wollen:

357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC 

kann wiederum in:

48949168||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC 

würde jede mögliche Hilfe

+0

Dank für all die Hilfe !! – OakvilleWork

Antwort

3

Ich denke, die einfachste Lösung ist:

  String s1 = "357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC"; 
      String s2 = "48949168"; 
      System.out.println(s2+s1.substring(s1.indexOf("||"))); 

Ausgang:

48949168 || 190 || RUE RACHELLE || ST ||| LES CÈDRES | J7T1J9 | QC

s1.substring(s1.indexOf("||") gibt Ihnen:

|| 190 || RUE RACHELLE || ST ||| LES CÈDRES | J7T1J9 | QC

2

Sie können die Zeichenfolge in zwei Teile aufgeteilt zu erkennen ist, dann concat Ihre andere Zeichenfolge mit dem zweiten Teilkette.

String s = "357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC"; 
String s1 = "48949168"; 
String a[] = s.split(s,2); 
String b = s1+a[1]; 
System.out.println(b); 
+0

Wie funktioniert das an split (s, 2) regex magic? –

+0

@GregKopff Das zweite Argument teilt JVM mit, die Zeichenfolge in nur 2 Teilstrings aufzuteilen. Das bedeutet, dass JVM das erste Auftreten der Regex überprüft und die Zeichenfolge von dort trennt. Die weiteren Regex-Ereignisse in der Zeichenfolge werden nicht überprüft. –

+0

Was mich verwirrt ist, dass die Regex, die Sie zu split() liefern, die Eingabezeichenfolge selbst ist. Wie passt das nur zum benötigten Bit? (Ich verwende Regex nicht viel). Sind Sie darauf angewiesen, dass das Pipe-Delimiter auch ein spezielles Regex-Zeichen ist? –

0
String s2 = "357902||190||RUE RACHELLE||ST|||LES CÈDRES|J7T1J9|QC"; 
String s3 = "48949168"; 
System.out.println(s2.replaceAll(s2.substring(0,s2.indexOf("||")), s3)); 
+1

'replaceAll' verwendet Regex als Argumente. Wenn Ihre Teilzeichenfolge ein ungültiges Muster ergibt, wird sie fehlschlagen. Es ist ein bisschen riskant, dies hier zu verwenden. Der andere pb ist, wenn die Teilkette gleich "1" ist, zum Beispiel wird die ganze "1" ersetzt. Nicht nur der erste Teil. –