我正在尝试根据多个值将字符串拆分为两个不同的数组
例如,控制台窗口中的用户输入
2+4/8*9
我只希望数字在数组中
Arr[0] = 2;
Arr[1] = 4;
Arr[2] = 8;
Arr[3] = 9;
然后
Operator[0] = +;
Operator[1] = /;
Operator[2] = *;
我熟悉只使用一个分隔符的split方法但是如何根据不同数量的分隔符分割字符串?
以下是我通过查看互联网上的各种文章但尝试出错的最新代码
Scanner in = new Scanner(System.in);
System.out.println("Enter input");
s = in.toString();
String [] operators = s.split("+|-|*|/"); //Also tried s.split("\\+\\-\\*\\/")
for(int i = 0; i<operators.length; i++) {
System.out.println(operators[i]);
}
答案 0 :(得分:1)
使用正则表达式,我们可以拆分表达式并将操作数存储在String []
中 String[] t = st.split("-|\\#|\\(|\\)|\\{|\\}|\\<|\\>|\\s+|\\(\\\"|\\;");
正则表达式基于“-,#,(,),{,},<,>,空格,;,#”分割字符串 对于“(双引号)和(反斜杠)之类的字符,然后迭代String的元素并删除字符。
答案 1 :(得分:0)
split
中的字符串参数是正则表达式。
*
,+
,-
和/
在正则表达式中具有特殊含义。 (星号表示“匹配任何”)。
如果要将它们作为精确符号匹配,则需要转义。
为此,请使用\\*
等。\*
表示正则表达式中的文字星号:在Java中,您需要转义反斜杠;你可以写\\
。
所以你应该使用像
这样的东西 \\+|\\-|\\*|\\/
答案 2 :(得分:0)
使用非数字正则表达式来分割字符串:
String input = "14*6+22";
String[] spl = input.split("\\D");
char[] operation = input.replaceAll("\\w", "").toCharArray();
System.out.println(Arrays.toString(spl));
System.out.println(Arrays.toString(operation));
答案 3 :(得分:0)
试试这个。
String str = "2+2-4*5/6";
str = str.replaceAll(" ", "");
String[] Arr = str.replaceAll("[\\+\\-\\*\\/]", " ").split(" ");
String[] Operator = str.replaceAll("[0-9]", " ").split(" ");
希望有所帮助!