[英]Split a mathematical expression
我正在分離一個字符串,這是一個數學表達式,我想拆分每個數字,運算符和括號,然后將它們發送到數組,這是我的代碼:
Scanner in = new Scanner(System.in);
System.out.println("enter the expression :");
String infija = in.nextLine();
String separate[] = infix.split("(?=[-+*/%()])|(?<=[^-+*/%][-+*/])|(?<=[()])");
但是當我輸入一個模數為m的表達式時,代碼不會將其分開。
例如,輸入
(2/3)+(2%1)
預期結果是:
[(,2, /, 3,), +,(, 2, %, 1,)]
有一種更簡單的方法:
String separate[] = infix.split("\\b|(?<=\\D)(?=\\D)");
這在單詞邊界和非數字之間分裂。
在正則表達式中,“單詞”字符是任何數字,字母或下划線。 單詞邊界位於單詞char和非單詞char之間(反之亦然)。
測試代碼:
System.out.println(Arrays.toString("2/(3+2)%1".split("\\b|(?<=\\D)(?=\\D)")));
輸出:
[2, /, (, 3, +, 2, ), %, 1]
應該這樣做
String myString= "(2/3)+(2%1)";
String[] result = myString.split("(?<=[-+*/%()])|(?=[-+*/%()])");
System.out.println(Arrays.toString(result));
輸出:
[(, 2, /, 3, ), +, (, 2, %, 1, )]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.