我有一个字符串变量,我想从中提取一些单词。这些词是我将需要的字段名称。目前,我正在使用 split 方法将字符串拆分为数组。
String whereClause = "id=? AND name=?";
String[] results = whereClause.split("[=?]");
在这种情况下,我只对获取包含“id”和“name”的数组感兴趣,但我得到的是 [id, , AND name]。这也得到“”和单词“AND”。我如何重建它以完成我正在尝试做的事情,或者是否有更好的方法来完成它?
最佳答案
您可以进行匹配而不是拆分。
String s = "id=? AND name=?";
Matcher m = Pattern.compile("[^\\s=?]+(?=[=?])").matcher(s);
while(m.find()){
System.out.println(m.group());
}
[^\\s=?]+
匹配任何字符,但不匹配空格或 =
或 ?
字符,一个或多个次。
输出:
id
name
或
创建一个新的数组列表,然后将匹配的结果附加到它。
ArrayList<String> list = new ArrayList<String>();
String s = "id=? AND name=?";
Matcher m = Pattern.compile("[^\\s=?]+(?=[=?])").matcher(s);
while(m.find()){
list.add(m.group());
}
System.out.println(list);
输出:
[id, name]
关于java - 使用拆分方法从单个字符串中提取字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29024168/