如何在java中拆分字符串而不丢失任何字符

如何在java中拆分字符串而不丢失任何字符,java,string,split,Java,String,Split,我正在使用eclipse for java 我想在不丢失任何字符的情况下从用户分割输入行 例如,输入行是:+2+sqrt(25)-41*3-abs(-4)-62/2 输出应该是:+2,+sqrt(25),-41,*3,-abs(-4),-62,/2 (如果我用“+”或等拆分,字符“+”本身将被删除。) 我该怎么办 我的代码是这样的: Scanner scanner=new Scanner(System.in); String str= scanner.nextLine();

我正在使用eclipse for java

我想在不丢失任何字符的情况下从用户分割输入行

例如,输入行是:
+2+sqrt(25)-41*3-abs(-4)-62/2

输出应该是:
+2,+sqrt(25),-41,*3,-abs(-4),-62,/2

(如果我用“+”或等拆分,字符“+”本身将被删除。)

我该怎么办

我的代码是这样的:

    Scanner scanner=new Scanner(System.in);
    String str= scanner.nextLine();
    String[] parts;
    parts = str.split("!?!?!!?!");  // i don't know what to put here

您可以使用Java中的正则表达式来实现这一点,前提是不能有嵌套的括号(这是绝对必要的)

这将为您提供一个简单的字符串数组。我使用Java集合来处理数组的创建,因为在解析字符串之前无法知道数组的大小

有关此正则表达式的说明:
[\\+\-/\\*]
查找操作员标志
[^\\\+\-\*/\\(]+
查找除运算符和左括号之外的所有内容
(\\([^\\(\\)]*\\)?
查找没有嵌套括号的括号内容

该守则规定:

+2
+ sqrt(25 )
-41
*3
- abs(-4)
-62 
/2

如果您需要嵌套括号,那么您需要实现一个解析器,我让您用谷歌搜索它。

您使用的是什么编程语言?请不要问与逻辑相关的问题,因为这可能有多种解决方案,而且远离主题。请始终上传您尝试过的代码和出现的错误删除空格并重新播放e运算符本身加上前缀逗号。@vikeng21代码现在被添加,现在您需要编写解析器了。祝您好运。它工作正常!我如何将结果放入字符串数组中?在我的程序中,我需要它放入字符串数组中(例如,它的名称是
parts[]
),因为我只需要将它放入
for(x:y)
例如:
for(字符串:部件)
请参见我对字符串数组的编辑
    parts.toArray(new String[parts.size()]);
+2
+ sqrt(25 )
-41
*3
- abs(-4)
-62 
/2