簡體   English   中英

Java中基於多個分隔符將字符串拆分為數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM