Pattern pattern = Pattern.compile("([^\\d.]|[\\d.]++)");
String[] equation = pattern.split("5+3--323");
System.out.println(equation.length);
我试图拆分数字(可能是组)和非数字,在这个例子中我希望有一个6号数组: 5,+,3, - , - ,323
我该怎么做?
答案 0 :(得分:7)
尝试使用匹配器,如下例所示。它会准确地返回您所追求的内容。
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MathSplitTest
{
public static void main(String[] args)
{
Pattern pattern = Pattern.compile("[0-9]+|[-+]");
String string = "5+3--323";
Matcher matcher = pattern.matcher(string);
while(matcher.find())
System.out.println("g0="+matcher.group(0));
}
}
答案 1 :(得分:2)
使用
怎么样?new java.util.Scanner(new java.io.StringReader("5+3--323"));
代替?
http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html
答案 2 :(得分:2)
如果您的数字以逗号分隔,则首先将字符串标记化;
tok = new StringTokenizer(string, ",");
然后尝试从每个令牌创建一个数字。如果它不是数字,那么它就是一个符号:
while (tok.hasMoreTokens()){
String tok = tok.nextTok();
try {
new Integer(tok);
}catch (NumberFormatException e){
}
}
如果tok不是数字,则抛出NumberFormatException。