Java使用多个条件拆分字符串
我想沿着几个不同的条件拆分一个字符串- 我知道有一个名为String.split(element)的Java字符串方法,它根据指定的元素将字符串拆分为数组 但是,在多个对象之间进行拆分似乎非常复杂——特别是在拆分必须发生在一系列元素的情况下 确切地说,我希望java拆分字符串Java使用多个条件拆分字符串,java,string,split,Java,String,Split,我想沿着几个不同的条件拆分一个字符串- 我知道有一个名为String.split(element)的Java字符串方法,它根据指定的元素将字符串拆分为数组 但是,在多个对象之间进行拆分似乎非常复杂——特别是在拆分必须发生在一系列元素的情况下 确切地说,我希望java拆分字符串 “a>=b”变成{“a”,“>=”,“b”} “a>b”变成{“a”,“>”,“b”} “a==b”变成{“a”,“==”,“b”} 我也一直在摆弄正则表达式,只是想看看如何精确地根据这个参数分割它,但我得到的最接近的
- “a>=b”变成{“a”,“>=”,“b”}
- “a>b”变成{“a”,“>”,“b”}
- “a==b”变成{“a”,“==”,“b”}
{“Apple”、“>=”、“Orange”}以下代码适用于您的示例:
System.out.println(Arrays.asList("a<=b".split("\\b")));
System.out.println(Arrays.asList)(“a您可以使用正则表达式。无论您对变量使用a、b或abc,您都将获得组1中的第一个变量、组2中的条件和组3中的第二个变量
Pattern pattern = Pattern.compile("(\\w+)([<=>]+)(\\w+)");
Matcher matcher = pattern.matcher("var1>=ar2b");
if(matcher.find()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
}
Pattern=Pattern.compile(“(\\w+)([]+)(\\w+)”;
Matcher Matcher=pattern.Matcher(“var1>=ar2b”);
if(matcher.find()){
系统输出println(匹配器组(1));
系统输出println(匹配器组(2));
系统输出println(匹配器组(3));
}
您可以手工将其编码出来,然后使用任何您想要拆分的令牌,就像这样
public String[] splitString(String word)
{
String[] pieces;
String[] tokens = {"==", ">=", "<=","<", ">"};
for(int i = 0; i < tokens.length; i++)
{
if(a.contains(tokens[i]))
{
pieces = {
word.substring(0, word.indexOf(tokens[i])),
tokens[i],
word.substring(word.indexOf(tokens[i]) + tokens[i].length(), word.length())};
return pieces;
}
}
return pieces;
}
公共字符串[]拆分字符串(字符串字)
{
弦[]件;
String[]tokens={“==”,“>=”,“拆分的条件是什么?我指定的条件正好符合我的要求。为什么不将字符串重写为a>=b,a=和>>之间的区别?我已经尝试了几天,现在仍然在学习我不明白它如何识别“>”与“>=”你的正则表达式所捕获的内容比预期的要多得多。我更喜欢这个正则表达式:“(\\w+)+(compop)+”(\\w+)”
wherecompop=“>|@KevinHu当这个答案起作用时,请注意它捕获的内容比你想要的要多得多。例如:“你好>>不“仍将匹配,并且您将得到{“hello”、“>>”和“no”}
是的,如果您仅使用>,a
,最好限制选项!!!!您的意思是word
?