2013-05-13 77 views
1

我有一個格式的一些數據,如需要幫助string.split()

int,int,'string',int,'string' 

每串由'包圍,我的問題是,某些字符串包含逗號,我怎麼能確保字符串。 split()在內部時不分割?

+6

爲此使用解析器。 String.split()對於這樣的任務是一個完全不適用的工具。 – 2013-05-13 09:39:54

+1

http://stackoverflow.com/questions/101100/csv-api-for-java – assylias 2013-05-13 09:40:18

+1

看看[這裏](http://stackoverflow.com/questions/1757065/java-splitting-a-comma-separated-string - 但忽略逗號在引號) – Jayamohan 2013-05-13 09:42:38

回答

0

你可以使用正則表達式如"/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g"並使用split()並檢查它是否有效?類似這樣的:

String str = "int,int,'string',int,'string','string,int'"; 
String[] arr = str.split("/('.*?'|[^',\\s]+)(?=\\s*,|\\s*$)/g"); 
for(String string:arr){ 
    System.out.println(string); 
} 
0

如果您自己創建數據,則可以使用不同的分隔符作爲分隔的分隔符。

或者,您可以使用逗號作爲分隔符正常分割,然後遍歷數組,併爲每個字符串條目計數找到的引號數,並重新組合包含單引號的元素,以數組順序流動eachother。