Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中基于多个分隔符将字符串拆分为数组_Java_Arrays_String - Fatal编程技术网

在Java中基于多个分隔符将字符串拆分为数组

在Java中基于多个分隔符将字符串拆分为数组,java,arrays,string,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

我试图基于多个值将字符串拆分为两个不同的数组

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

   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]);
}
Scanner-in=新的扫描仪(System.in);
System.out.println(“输入”);
s=in.toString();
字符串[]运算符=s.split(“+|-|*|/”//还尝试了s.split(“\\+\-\\*\\\/”)

对于(int i=0;i,
split
中的字符串参数是正则表达式

*
+
-
/
在正则表达式中具有特殊含义。(星号表示“匹配任意”)

如果要将它们作为精确的符号进行匹配,则需要对其进行转义

要做到这一点,请使用
\\*
等。
\*
表示正则表达式中的文字星号:在Java中,您需要转义反斜杠;您可以通过编写
\\
来实现这一点

所以你应该用类似


split
中的字符串参数是正则表达式

*
+
-
/
在正则表达式中具有特殊含义。(星号表示“匹配任意”)

如果要将它们作为精确的符号进行匹配,则需要对其进行转义

要做到这一点,请使用
\\*
等。
\*
表示正则表达式中的文字星号:在Java中,您需要转义反斜杠;您可以通过编写
\\
来实现这一点

所以你应该用类似


\\+\\-\\\*\\/

使用非数字正则表达式拆分字符串:

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

使用非数字正则表达式拆分字符串:

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));
试试这个

String str = "2+2-4*5/6";
str = str.replaceAll(" ", "");
String[] Arr = str.replaceAll("[\\+\\-\\*\\/]", " ").split(" ");
String[] Operator = str.replaceAll("[0-9]", " ").split(" ");
希望有帮助!

试试这个

String str = "2+2-4*5/6";
str = str.replaceAll(" ", "");
String[] Arr = str.replaceAll("[\\+\\-\\*\\/]", " ").split(" ");
String[] Operator = str.replaceAll("[0-9]", " ").split(" ");

希望有帮助!

使用正则表达式,我们可以拆分表达式并将操作数存储在字符串[]中

String[]t=st.split(“-\\\\\\\\\(\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\(\\\\\\\\”)

正则表达式基于“-,#,(,),{,},空格,;,#拆分字符串
对于类字符“(双引号)和(反冲),然后迭代字符串元素并删除字符。

使用正则表达式,我们可以拆分表达式并将操作数存储在字符串[]中

String[]t=st.split(“-\\\\\\\\\(\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\(\\\\\\\\”)

正则表达式基于“-,#,(,),{,},空格,;,#拆分字符串
对于像“(双引号)和(反冲)这样的字符,然后迭代字符串元素并删除字符。

可能重复Use Spring.split()方法,并将正则表达式作为参数传递给该方法。可能重复Use Spring.split()方法方法并将正则表达式作为参数传递给该方法。现在尝试了此操作,得到了以下错误:java.util.Scanner[delimiters=\p{javaWhitespace}][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q\E][positive后缀=][NaN string=\Q?\E][infinity string=\Q?\E]现在尝试此操作,但收到此错误java.util.Scanner[delimiters=\p{javaWhitespace}][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\,][decimal decimal separator=\.][无限字符串=\Q?\E]