使用split方法从单个字符串中提取字段名称

时间:2015-03-13 02:58:04

标签: java string

我有一个字符串变量,我想从中提取一些单词。这些单词是我需要的字段名。目前,我正在使用split方法将字符串拆分为数组。

String whereClause = "id=? AND name=?";
String[] results = whereClause.split("[=?]");

在这种情况下,我只对获取包含“id”和“name”的数组感兴趣,但我得到的是[id ,, AND name]。这也得到“”和“和”这个词。我怎样才能重建这个以完成我想要做的事情,或者有更好的方法来实现这个目标吗?

3 个答案:

答案 0 :(得分:3)

你可以做匹配而不是分裂。

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]

答案 1 :(得分:0)

String whereClause = "id=? AND name=?";
String[] results = whereClause.split("[=?]");
System.out.println(results[0]);
        System.out.println(results[2].substring(results[2].indexOf("AND")+4,results[2].length()));

试试这段代码,我只是做了给定字符串的子串

答案 2 :(得分:0)

用空格分割

String whereClause = "id=? AND name=?";
String[] results = whereClause.split(" ");
for(String tempResult : results)
{
    if(tempResul.indexOf("id")=-1)
    {
     // do your logic here
    }
    //same with other name 
}