2013-05-13 74 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。