我试图在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异常。
有人知道为什么这样做?
答案 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)
请使用此链接查询您的问题。