字符串拆分方法没有给出预期的结果[重复]
Posted
技术标签:
【中文标题】字符串拆分方法没有给出预期的结果[重复]【英文标题】: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 异常。
有人给出想法,为什么它会这样给予?
【问题讨论】:
【参考方案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 (.)
【讨论】:
以上是关于字符串拆分方法没有给出预期的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章