2012-01-08 26 views
0

我使用收益的Web服務的逗號分隔值的列表:當某些值爲空時,如何從逗號分隔值列表中提取值?

a,b,,d,,f,,h,,j,,l,,, 

我你如何提取這些納入各自的容器變量時,他們中的一些是空的?

String a = ...; 
String b = ...; 
String c = ...; 
String d = ...; 
String e = ...; 
String f = ...; 
String g = ...; 
String h = ...; 
String i = ...; 
String j = ...; 
String k = ...; 
String l = ...; 
+0

點最似乎缺少的是Mocktagish希望保留缺失值,不一定將它們分配給名爲a,b,c等變量。 – 2012-01-08 02:42:16

回答

3
String[] result = "a,b,,d,,f,,h,,j,,l,,,".split(","); 

然後你可以分配你的A,B,C等來的result

String a = result[0]; 
... 
+0

嗯......'String.split(...)'返回一個String []' – 2012-01-08 01:52:12

+0

是的,我已經更新了;) – Guillaume 2012-01-08 01:54:07

3
String[] arr = yourString.split(",", -1); 
String a = arr[0]; 
String b = arr[1]; 
...etc... 

空字符串元素將返回爲"",包括那些在結束。所以"a,b,,".split(",", -1)將產生以下數組中:{ "a", "b", "", "" }

如果,另一方面,你不感興趣的尾隨字符串,如果他們是空的,這樣做:

String[] arr = yourString.split(","); 

這樣,後空字符串(如果有的話)將被刪除。 "a,b,,".split(",")將因此導致{ "a", "b" }

+2

如何從字符串中減去1? – 2012-01-08 02:13:10

+0

您在split()參數列表中缺少一個逗號。 – 2012-01-08 02:40:33

+0

你絕對是對的。那裏有太多逗號,錯過了需要的ona。 :-)現在修復。 – Seramme 2012-01-08 10:06:34

1

你會更好使用數組而不是單個變量,a,b,...。然後,你可以簡單地使用split如其他人所說,並用它做:

String full_line = // get the full line from your web service. 
String[] abc_etc = full_line.split(","); 
// abc_etc now contains all fields, in order. 
// Do note that empty fields are stored as "", not null. 

如果你真的需要將它們存儲在單個變量,你需要做一次一個:

String full_line = // get the full line from your web service. 
String[] fields = full_line.split(","); 
String a = fields[0]; 
String b = fields[1]; 
String c = fields[2]; 
... 

如果你想null代替"",添加一個檢查:

String a = fields[0].equals("")? null : fields[0];