[英]Split String into Array based on multiple delimiters in 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]);
}
在字符串參數split
為正則表達式。
*
, +
, -
和/
有一個正則表達式特殊含義。 (星號的意思是“匹配的”)。
如果要將它們匹配為精確的符號,則需要對它們進行轉義。
要做到這一點,請使用\\\\*
等。 \\*
表示正則表達式中的文字星號:在 Java 中,您需要轉義反斜杠; 你通過寫\\\\
做到這一點。
所以你應該使用類似的東西
\\\\+|\\\\-|\\\\*|\\\\/
嘗試這個。
String str = "2+2-4*5/6";
str = str.replaceAll(" ", "");
String[] Arr = str.replaceAll("[\\+\\-\\*\\/]", " ").split(" ");
String[] Operator = str.replaceAll("[0-9]", " ").split(" ");
希望有幫助!
使用正則表達式,我們可以拆分表達式並將操作數存儲在 String[] 中
String[] t = st.split("-|\\\\#|\\\\(|\\\\)|\\\\{|\\\\}|\\\\<|\\\\>|\\\\s+|\\\\(\\\\\\"|\\\\;");
正則表達式根據 "-, #, (, ), {, }, <, >, space, ;, #" 分割字符串,例如 "(雙引號) 和 (反斜杠) 然后迭代字符串的元素並刪除字符。
使用非數字正則表達式來分割你的字符串:
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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.