it-swarm.com.de

Java - Aufteilen und Trimmen in einem Schuss

Ich habe einen String wie diesen: String attributes = " foo boo, faa baa, fii bii," Ich möchte ein Ergebnis wie dieses erhalten:

String[] result = {"foo boo", "faa baa", "fii bii"};

Meine Frage ist also, wie man Split und Trim in einem Schuss machen sollte, den ich bereits geteilt habe:

String[] result = attributes.split(",");

Aber die spaces noch im Ergebnis:

String[] result = {" foo boo", " faa baa", " fii bii"};
                    ^           ^           ^

Ich weiß, dass wir eine Schleife machen können und trim für jeden machen können, aber ich möchte es in Schuss machen.

24
YCF_L

Verwenden Sie zum Aufteilen den regulären Ausdruck \s*,\s*.

String result[] = attributes.split("\\s*,\\s*");

Für anfängliche und nachgestellte Whitespaces
Die vorherige Lösung hinterlässt noch anfängliche und nachgestellte Leerzeichen. Wenn wir also eine davon erwarten, können wir die folgende Lösung verwenden, um dieselbe zu entfernen:

String result[] = attributes.trim().split("\\s*,\\s*");
47
Raman Sahasi

Mit Java 8 können Sie dies in einer Zeile tun

String[] result = Arrays.stream(attributes.split(",")).map(String::trim).toArray(String[]::new);
21
Andrei Olar

Wenn sich zwischen den Kommas kein Text befindet, werden mit dem folgenden Ausdruck keine leeren Elemente erstellt:

String result[] = attributes.trim().split("\\s*,+\\s*,*\\s*");
1
Maxple
String result[] = attributes.trim().split("\\s*,[,\\s]*");

zuvor hier veröffentlicht: https://blog.oio.de/2012/08/23/split-comma-separated-strings-in-Java/

0

Was ist mit dem Aufteilen mit Komma und Leerzeichen?

String result[] = attributes.split(",\\s");

erstellen Sie Ihre eigene benutzerdefinierte Funktion

private static String[] split_and_trim_in_one_shot(String string){
 String[] result  = string.split(",");
 int array_length = result.length;

 for(int i =0; i < array_length ; i++){
  result[i]=result[i].trim();
 }
 return result;

Überlastung mit Berücksichtigung des benutzerdefinierten Trennzeichens 

private static String[] split_and_trim_in_one_shot(String string, String delimiter){
 String[] result  = string.split(delimiter);
 int array_length = result.length;

 for(int i =0; i < array_length ; i++){
  result[i]=result[i].trim();
 }
 return result;
0
TimeTrax