java - 如何拆分带有圆括号的字符串?

标签 java arrays string split

得到一个字符串:

String s = "1+2*(30+4/2-(1+2))*2+1";

得到了分割字符串的方法:

    public void convertString(String s) {
        String[] arr = s.split("(?<=[\\d.])(?=[^\\d.])|(?<=[^\\d.])(?=[\\d.])");
}

问题是:

    Output:
    [1, +, 2, *(, 30, +, 4, /, 2, -(, 1, +, 2, ))*, 2, +, 1] 
    //here round brackets store in the same cell with next symbol or prev symbol   *(,  ))*,

预期输出:

[1, +, 2, *, (, 30, +, 4, /, 2, -, (, 1, +, 2, ), ), *, 2, +, 1]
// here round brackets store in a separate arr cells

我需要在单独的数组单元格中存储圆括号。

如何实现?

最佳答案

您的正则表达式实际上在从非数字到数字的任何位置拆分,反之亦然。它明确不会在非数字之间拆分。

所以给出你当前的方法,修复方法是

public void convertString(String s) {
    String[] arr = s.split("(?<=[\\d.])(?=[^\\d.])|(?<=[^\\d.])(?=[^\\d.])|(?<=[^\\d.])(?=[\\d.])");
}

也就是说,这可能是更好的方法。一个简单的正则表达式匹配,其中表达式要么是单个非数字,要么是一组急切的数字,已经比这更容易了。

关于java - 如何拆分带有圆括号的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64753249/

相关文章:

java - Apache Storm : Ack not working

java - 如何从另一个类访问字符串值?

python - 删除字符串中特定索引处的 'range' 个字符

java - 使用Java 8安装RichTextFX时发生Gradle错误

java - 为什么 Google map 静态 API 无法处理我的编码 URI?

ios - 闭包中的 Inout 参数(Swift)

Java 检索 JSON 中嵌套字段的方法

java - 在 float 数组中查找最小值

java - 为什么要求我将 xml 中的字符串设置为 @string 引用?

java - 如何找到最近的回文数?