字符串拆分方法没有给出所需的结果

时间:2016-02-03 11:55:32

标签: java arrays string split

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

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异常。

有人知道为什么这样做?

5 个答案:

答案 0 :(得分:1)

String#split方法需要regular expression

"."表示任何字符

逐渐退出"."以表示文字点:number.split("\\.")

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

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

答案 1 :(得分:1)

你需要逃离点。 split方法采用正则表达式。来自文档:

  

参数:正则表达式分隔正则表达式

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

答案 2 :(得分:1)

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

number.split("\\.")

答案 3 :(得分:0)

请注意文档

  

public String [] split(String regex)

     

将此字符串拆分为给定正则表达式的匹配项。

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

所以你在每个角色分裂

如果您只想匹配一个点,"\\."将起作用。

答案 4 :(得分:0)

SELECT * FROM Gigs 
WHERE [Date] >= CAST(getdate() + 1 as date)

请使用此链接查询您的问题。

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