【问题标题】:java split does not work correctly with ^ [duplicate]java split 不能正确使用 ^ [重复]
【发布时间】:2014-10-22 19:50:23
【问题描述】:

我想为字符^ 拆分一个字符串,但它不起作用。我有以下代码:

String numberBase10 = "3.52*10^2";
String[] vector = numberBase10.split("^"); 
System.out.println("numberBase10: " + numberBase10);
System.out.println("Vector[0]: " vector[0]);

我得到以下输出:

numberBase10: 3.52*10^2
Vector[0]: 3.52*10^2

如果我尝试访问 vector[1],则会收到错误 IndexOutOfArray。

我必须输入任何转义字符,以便 split 与 ^ 一起使用?

谢谢

【问题讨论】:

    标签: java split


    【解决方案1】:

    您需要使用\\^ 转义它。

    ^ 本身是一个特殊字符,表示否定(在一个组中,例如 [^abc],它匹配除 abc 之外的任何内容)或行首的锚。

    【讨论】:

      【解决方案2】:

      split 采用正则表达式。 ^ 是用于匹配正则表达式中字符串开头的锚点,因此需要转义

      String[] vector = numberBase10.split("\\^");
      

      【讨论】:

        【解决方案3】:

        java 字符串拆分方法对正则表达式进行操作,'^' 是正则表达式中的锚字符,因此必须对其进行转义才能将其视为常规字符:

        String[] vector = numberBase10.split("\\^");
        

        【讨论】:

          【解决方案4】:

          ^ 是正则表达式的特殊字符,你需要转义它 - 如果我改为,

          String[] vector = numberBase10.split("\\^");
          

          然后我得到

          Vector[0]: 3.52*10
          

          没有其他代码更改。

          【讨论】:

            【解决方案5】:

            由于split() 方法需要一个正则表达式,如果你想在一个精确的字符串上进行拆分而不用担心它可能包含任何正则表达式特殊字符,你应该先将它转义

            String regex = java.util.regex.Pattern.quote("^");

            然后在regex 上拆分。整个概念可以打包成一个不错的静态方法:

            public static String[] splitRaw(String input, String separator) {
                String regex = java.util.regex.Pattern.quote(separator);
                return input.split(regex);
            }
            

            【讨论】:

              猜你喜欢
              • 2015-05-19
              • 1970-01-01
              • 2015-05-17
              • 1970-01-01
              • 2014-05-10
              • 1970-01-01
              • 2014-09-06
              • 2011-12-17
              • 2015-12-29
              相关资源
              最近更新 更多