簡體   English   中英

拆分數學表達式

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

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