2016-01-26 53 views
0

我想基于多个值字符串分割到数组基于Java中的多个分隔符

在控制台窗口

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

可能的重复[Java String.split()Regex](http://stackoverflow.com/questions/9856916/java-string-split-regex) – marcospereira

+0

使用Spring.split()方法并传递Regex作为该方法的论点。 –

回答

0

字符串参数在split尝试最新的代码是正则表达式

*,+,-/在正则表达式中有特殊含义。 (星号的意思是“匹配任何”)。

你需要转义他们,如果你想匹配他们作为确切的符号。

要做到这一点使用\\*\*意味着在正则表达式字面星号:在Java中,你需要逃生反斜线;你通过写\\来做到这一点。

所以,你应该使用类似

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

+0

尝试此操作现在得到此错误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 suffix =] [negative suffix =] [NaN string = \ Q?\ E] [[ infinity string = \ Q?\ E] –

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

试试这个。

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

希望有帮助!

相关问题