我有一个字符串说," 1.0 + 20 * 30.2-4.0 / 10.1"我希望以这样的方式分割,我将有一个字符串数组说
strArr = {"1.0", "20", "30.2", "4.0",10.1}
我为此编写了以下代码
public class StringSplitDemo {
public static void main(String[] args) {
String str = "1.0+20*30.2-4.0/10.1";
String[] strArr = (str.split("[\\+-/\\*]"));
for(int i=0;i<strArr.length;i++)
System.out.print(strArr[i]+" ");
}
}
而不是打印预期的输出(由我),即1.0 20 30.2 4.0 10.1打印
output: 1 0 20 30 2 4 0 10 1
似乎将字符串拆分为&#34;。&#34;即使我没有将它包含在正则表达式模式中。
我在这里失踪了什么? 这样做的正确方法是什么?
答案 0 :(得分:1)
使用
String str = "1.0+20*30.2-4.0/10.1";
String[] strArr = str.split("[-+/*]");
System.out.print(Arrays.toString(strArr));
[\\+-/\\*]
字符类不仅匹配您定义的4个字符,因为-
创建了+
和/
之间的范围。
您可以通过转义连字符来修复正则表达式,但是当您将-
放在字符类的开头(或结尾)时,该模式看起来更清晰,您不必在那里转义它,连字符被视为文字-
。
答案 1 :(得分:0)
问题在于正则表达式
所以你需要逃避 + ,否则它会把它当作至少一次
String[] strArr = (str.split("[\\-/\\*\\+]"));
顺便说一下逃生符号不是必需的。它可以简单地写成
String[] strArr = (str.split("[-/*+]"));