基于Java中的多个分隔符将String拆分为Array

时间:2016-01-26 15:27:44

标签: java arrays string

我正在尝试根据多个值将字符串拆分为两个不同的数组

例如,控制台窗口中的用户输入

   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]);
}

4 个答案:

答案 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(" ");

希望有所帮助!