这是我的问题
我有这个字符串,我从webservice获得价值.....
“2000-07-01 14:29:12”,“2020-07-01 14:29:12”,“物业检查”,“maryam.com”,“Bakar”,“Maryam”,“ 915ae8fa7cdb44b3-1368080159272“,”05/21/2013 07:28:59“,”05/09/2013 06:15:59“,”物业检查“,”2“,”“,”“,”“,” ”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “2013年5月9日”, “”, “”, “”, “”, “”, “2013年5月9日”, “”, “假”, “假”,“假”, “假”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “假”, “”, “”, “假”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “” , “2013年5月9日”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “”, “2013年5月9日”, “”, “1.5678106,103.6354891”, “”, “” “”
目前我设法使用
拆分所有数据StringTokenizer stringtokenizer = new StringTokenizer(gabung[rline], ",");
但我不希望字符串值从第1个字符串开始,直到第12个字符串
> "2000-07-01 14:29:12","2020-07-01 14:29:12",,"Property
> Inspection","maryam.com","Bakar","Maryam","915ae8fa7cdb44b3-1368080159272","05/21/2013
> 07:28:59","05/09/2013 06:15:59","Property Inspection","2",
但我希望在第12个字符串之后的下一个值..
我所做的是使用字符串拆分和拆分使用','和计数器..来计算它是否是第12个字符串
而不是使用计数器..你们有更好的解决方案吗?我不太了解正则表达式。答案 0 :(得分:1)
使用split
:(非常简单,效率有点低,但可能不会太糟糕 - 除非我正在编写生产代码,否则我不会为此烦恼)
System.out.println(str.split(",")[12]);
使用indexOf
:(稍微复杂一些,效率更高)
int index = 0;
for (int i = 0; i < 12; i++)
index = str.indexOf(',', index) + 1;
System.out.println(str.substring(index, str.indexOf(',', index)));
使用正则表达式:(可能比它的价值更复杂)
Pattern pattern = Pattern.compile("^(?:[^,]*,){12}([^,]*)");
Matcher matcher = pattern.matcher(str);
while (matcher.find())
System.out.println(matcher.group(1));
使用indexOf
:
int index = 0;
for (int i = 0; i < 12; i++)
index = str.indexOf(',', index) + 1;
System.out.println(str.substring(index));
使用正则表达式:
Pattern pattern = Pattern.compile("^(?:[^,]*,){12}(.*)");
Matcher matcher = pattern.matcher(str);
while (matcher.find())
System.out.println(matcher.group(1));
有关Java正则表达式的更多信息,请查看this page。
答案 1 :(得分:0)
以下正则表达式将匹配带引号的字符串,后跟可选的逗号
Pattern p = Pattern.compile("\"[^\"]*\",?");
Matcher m = p.matcher(INPUT);
int count = 0;
while(m.find()) {
System.out.println(INPUT.substring(m.start(), m.end());
}
答案 2 :(得分:0)
如果每个字符串总共有94个,
分隔..您可以使用此正则表达式拆分输入
,(?=(?:[^,]*,){82}[^,]*$)
所以
String[] output = inputString.split(aboveRegex);
output[1];//your required value
或
如果你确定前12个字符串,你可以匹配它与此正则表达式
(?:[^,]*,){12}(.*)$//group1 captures your required data