[英]Using String.split to split with multiple conditions
所以我有以下字符串:
deptid = 33 AND location ='NewYork'
基本上,我试图将其解析为令牌。 我一直在使用Split.string并用空格分隔,这将满足我需要的一切,但是在某些情况下字符串可能是:
deptid = 33 AND location ='New York'
我需要将所有内容保持在引号之间。 有没有一种方法可以使用String.split对其进行拆分,以便将所有内容按空间拆分,除非遇到引号时会给我引号之间的所有内容的令牌?
编辑:对不起,您不能早点澄清! 但是我想要那句话中的每一件事。 我要Deptid,=,33,AND,位置,=纽约。 AND语句将不会一直存在。 可能只是
位置=“纽约”
你的评论:
我正在尝试将其存储到String []令牌中。 因此,我希望令牌[0]为33,令牌[1]为“纽约”。
试试这个
String s = "deptid = 33 AND location = 'New York'";
int index = 0;
String[] arr = s.split("AND");
String[] tokens = new String[arr.length];
for (String str : arr) {
tokens[index++] = str.split("=")[1].trim();
}
for (String token : tokens) {
System.out.println(token);
}
输出:
33
'New York'
您需要的不仅仅是String.split功能更强大,还可以使用Patterns:
String myString = "deptid = 33 AND location = 'New York'";
List<String> tokens = new LinkedList<>();
Pattern tokenPattern = Pattern.compile("'[^']*'|[^ ]+");
Matcher matcher = tokenPattern.matcher(myString);
while(matcher.find()) {
tokens.add(matcher.group());
}
System.out.println(tokens);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.