根据我的项目,我需要将一个字符串分成两部分。
下面是示例:
String searchFilter = "(first=sam*)(last=joy*)";
searchFilter
是一个字符串。
我想将字符串分成两部分
first=sam*
和last=joy*
这样我就可以根据我的要求再次将这些变量分成first,sam*,last
和joy*
。
我没有太多关于java的经验。任何人都可以帮助我实现这一目标。这将非常有帮助。
提前致谢
答案 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)
您可以使用split
或substring
或使用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*",""}
(空字符串是猜测 - 无法在此测试)。然后,对于每个属性,我们再次在“=”上拆分以获得键/值对。