【问题标题】:String Split method not Giving desired results [duplicate]字符串拆分方法没有给出预期的结果[重复]
【发布时间】:2016-05-12 14:38:00
【问题描述】:

我正在尝试在java中使用String的Split方法我有这样的例子。

String number  = Math.random() * 100 + "";
System.out.println("Number is : " + number);
String[] seprate = number.split(".");
System.out.println(seprate.length);

它应该给我 2 堆数组我的意思是 2 数组元素,如果值类似于例如67.90512897385857

但它并没有那样赋予价值

String number  = Math.random() * 100 + "";
System.out.println("Number is : " + number);
String[] seprate = number.split(".");
System.out.println(seprate.length);
System.out.println(seprate[1]);

它给出了 arrayindexoutbound 异常。

有人给出想法,为什么它会这样给予?

【问题讨论】:

    标签: java arrays string split


    【解决方案1】:

    String#split 方法采用regular expression

    其中的"." 表示任何字符

    转义您的 "." 以表示文字点:number.split("\\.")

    正如Pieter De Bie 指出的那样,在将文字传递给将被解释为正则表达式的参数时,使用java.util.regex.Pattern 安全地转义您的文字将对您有很大帮助。

    在这种情况下,您可以使用:number.split(Pattern.quote("."))

    【讨论】:

    • 除了这个答案:我一直使用 string.split(Pattern.quote("possibleRegex")) 来确保我没有拆分正则表达式
    • @PieterDeBie 好点,将添加到答案中。
    • 不客气,不过我的名字中有一个小错字:p
    • @PieterDeBie 哎呀。现在修复:D
    【解决方案2】:

    您需要转义点。 split 方法采用正则表达式。来自文档:

    参数:regex 分隔正则表达式

    String[] seprate = number.split("\\.");
    

    【讨论】:

      【解决方案3】:

      Split 适用于正则表达式,您应该像这样使用

      number.split("\\.")
      

      【讨论】:

        【解决方案4】:

        注意文档

        公共字符串[] 拆分(字符串正则表达式)

        围绕给定正则表达式的匹配拆分此字符串。

        在正则表达式中,.任何 字符(通常除了换行符)。

        所以你正在分裂每个角色

        如果你只想匹配一个点,"\\." 可以。

        【讨论】:

          【解决方案5】:
          Double f = Math.random() * 100;
                  String number  = String.valueOf(f);
                  System.out.println("Number is : " + number);
                  String[] seprate = number.split("\\.");
                  System.out.println(seprate.length);
          

          请使用此链接回答您的问题。

          The split() method in Java does not work on a dot (.)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-02
            相关资源
            最近更新 更多