Java与数学表达式分裂

ber*_*rkc 4 java math

我正在尝试拆分数学表达式.

String number = "100+500";

String[] split = new String[3];
Run Code Online (Sandbox Code Playgroud)

我要实现

  • split [0] ="100"
  • split [1] ="+"
  • split [2] ="500"

我尝试了这个,但我不知道该怎么写分裂.

split = number.split(????);
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 6

您希望在不消耗任何输入的情况下在数字和非数字之间进行拆分...您需要环顾四周:

String[] split = number.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)");
Run Code Online (Sandbox Code Playgroud)

什么是火车残骸的正则表达式?

它表达了这个答案的最初句子:

  • (?<=\d) 表示前一个字符是一个数字
  • (?=\D) 表示下一个字符是非数字
  • (?<=\d)(?=\D)一起将匹配之间的一个数字和一个非数字
  • regexA|regexB表示regexA regexB匹配,用作上述点,但非数字然后用数字表示反之亦然逻辑

重要的一点是环顾四周并不消耗,因此拆分时不会吞噬任何输入.


这是一些测试代码:

String number = "100+500-123/456*789";
String[] split = number.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)");
System.out.println(Arrays.toString(split));
Run Code Online (Sandbox Code Playgroud)

输出:

[100, +, 500, -, 123, /, 456, *, 789]
Run Code Online (Sandbox Code Playgroud)