在JAVA中将字符串分成子字符串

时间:2010-05-28 06:51:09

标签: java substring

根据我的项目,我需要将一个字符串分成两部分。

下面是

示例:

String searchFilter = "(first=sam*)(last=joy*)";

searchFilter是一个字符串。 我想将字符串分成两部分

first=sam*last=joy* 这样我就可以根据我的要求再次将这些变量分成first,sam*,lastjoy*

我没有太多关于java的经验。任何人都可以帮助我实现这一目标。这将非常有帮助。

提前致谢

6 个答案:

答案 0 :(得分:9)

最灵活的方法可能是使用正则表达式:

import java.util.regex.*;

public class Test {
    public static void main(String[] args) {

        // Create a regular expression pattern
        Pattern spec = Pattern.compile("\\((.*?)=(.*?)\\)");

        // Get a matcher for the searchFilter
        String searchFilter = "(first=sam*)(last=joy*)";
        Matcher m = spec.matcher(searchFilter);

        // While a "abc=xyz" pattern can be found...
        while (m.find())
            // ...print "abc" equals "xyz"
            System.out.println("\""+m.group(1)+"\" equals \""+m.group(2)+"\"");
    }
}

<强>输出:

"first" equals "sam*"
"last" equals "joy*"

答案 1 :(得分:1)

查看String.split(..)String.substring(..),使用它们,您应该能够实现您的目标。

答案 2 :(得分:1)

您可以使用splitsubstring或使用StringTokenizer执行此操作。

答案 3 :(得分:1)

我认为你可以用很多不同的方式来做,这取决于你。 使用正则表达式或其他内容http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

无论如何,我建议:

int separatorIndex = searchFilter.indexOf(")(");
String filterFirst = searchFilter.substring(1,separatorIndex);
String filterLast = searchFilter.substring(separatorIndex+1,searchFilter.length-1);

答案 4 :(得分:1)

我有一个可以解决问题的小代码

StringTokenizer st = new StringTokenizer(searchFilter, "(||)||=");
        while(st.hasMoreTokens()){
            System.out.println(st.nextToken());
        }

它会给出你想要的结果。

答案 5 :(得分:0)

这个(未经测试的代码片段)可以做到这一点:

 String[] properties = searchFilter.replaceAll("(", "").split("\)");
 for (String property:properties) {
   if (!property.equals("")) {
      String[] parts = property.split("=");
      // some method to store the filter properties
      storeKeyValue(parts[0], parts[1]); 
   }
 }

背后的想法:首先我们摆脱括号,更换开口括号,并使用闭合括号作为过滤器属性的分割点。结果数组包含字符串{"first=sam*","last=joy*",""}(空字符串是猜测 - 无法在此测试)。然后,对于每个属性,我们再次在“=”上拆分以获得键/值对。