【问题标题】:Split String into Array based on multiple delimiters in Java基于Java中的多个分隔符将字符串拆分为数组
【发布时间】:2016-01-26 15:27:43
【问题描述】:

我正在尝试根据多个值将字符串拆分为两个不同的数组

例如控制台窗口中的用户输入

   2+4/8*9

我只想将数字放在数组中

Arr[0] = 2;
Arr[1] = 4;
Arr[2] = 8;
Arr[3] = 9;

然后

Operator[0] = +;
Operator[1] = /;
Operator[2] = *;

我熟悉只使用一个分隔符的拆分方法,但是如何根据不同数量的分隔符拆分字符串?

以下是我通过查看互联网上的各种文章尝试但出现错误的最新代码

Scanner in = new Scanner(System.in);
System.out.println("Enter input");
s = in.toString();

String [] operators = s.split("+|-|*|/"); //Also tried s.split("\\+\\-\\*\\/")

for(int i = 0; i<operators.length; i++) {
    System.out.println(operators[i]);
}

【问题讨论】:

  • Java String.split() Regex的可能重复
  • 使用 Spring.split() 方法并将正则表达式作为参数传递给该方法。

标签: java arrays string


【解决方案1】:

split 中的字符串参数是一个正则表达式

*+-/ 在正则表达式中具有特殊含义。 (星号表示“匹配任何”)。

如果您想将它们作为精确符号匹配,则需要转义它们。

要做到这一点,请使用\\* 等。\* 表示正则表达式中的文字星号:在 Java 中,您需要 转义反斜杠;你可以写\\

所以你应该使用类似的东西

\\+|\\-|\\*|\\/

【讨论】:

  • 试过这个现在得到这个错误 java.util.Scanner[delimiters=\p{javaWhitespace} ][position=0][match valid=false][need input=false][source closed=false ][跳过=false][组分隔符=\,][小数分隔符=\.][正前缀=][负前缀=\Q \E][正后缀=][负后缀=][NaN字符串=\Q ?\E][无穷大字符串=\Q?\E]
【解决方案2】:

试试这个。

String str = "2+2-4*5/6";
str = str.replaceAll(" ", "");
String[] Arr = str.replaceAll("[\\+\\-\\*\\/]", " ").split(" ");
String[] Operator = str.replaceAll("[0-9]", " ").split(" ");

希望有帮助!

【讨论】:

    【解决方案3】:

    使用 Regex 我们可以拆分表达式并将操作数存储在 String[]

    String[] t = st.split("-|\\#|\\(|\\)|\\{|\\}|\\&lt;|\\&gt;|\\s+|\\(\\\"|\\;");

    正则表达式拆分字符串基于“-、#、(、)、{、}、、空格、;、#” 对于像“(双引号)和(反斜杠)这样的字符,然后迭代字符串的元素并删除字符。

    【讨论】:

      【解决方案4】:

      使用非数字正则表达式拆分您的字符串:

      String input     = "14*6+22";
      String[] spl     = input.split("\\D");
      char[] operation = input.replaceAll("\\w", "").toCharArray();
      
      System.out.println(Arrays.toString(spl));
      System.out.println(Arrays.toString(operation));
      

      【讨论】:

        猜你喜欢
        • 2012-02-27
        • 1970-01-01
        • 2011-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-08
        • 2019-03-15
        • 1970-01-01
        相关资源
        最近更新 更多