有arrays的麻烦,也许分裂

String realstring = "&&&.&&&&"; Double value = 555.55555; String[] arraystring = realstring.split("."); String stringvalue = String.valueof(value); String [] valuearrayed = stringvalue.split("."); System.out.println(arraystring[0]); 

对不起,如果它看起来不好 在我的手机上重写了。 我一直在System.out.println得到ArrayIndexOutOfBoundsException: 0 。 我看了,无法搞清楚。 谢谢您的帮助。

split()将regexp作为参数,而不是文字字符串。 你必须逃避点:

 string.split("\\."); 

要么

 string.split(Pattern.quote(".")); 

或者您也可以简单地使用indexOf('.')substring()来获取字符串的两个部分。

如果目标是获得double的整数部分,你也可以简单地使用

 long truncated = (long) doubleValue; 

split使用正则表达式作为参数和正则表达式. 表示“除行分隔符之外的任何字符”,因此您可以预期"a.bc".split(".")将创建空字符串数组,如["","","","",""] 。 唯一的原因是它没有发生是因为(来自split javadoc )

此方法的作用就像通过调用给定表达式和limit参数为零的双参数split方法一样。 因此,结尾的空字符串不包含在结果数组中

因为所有字符串都是空的,你得到空数组(这是因为你看到ArrayIndexOutOfBoundsException )。

要关闭删除机制,您必须使用具有负limit split(regex, limit)版本。

拆分. 文字你需要用\.来逃避它\. (在Java中需要将其写为"\\."因为\也是字符串元字符)或[.]或其他正则表达式机制。

点(。)是一个特殊字符,因此您需要将其转义。

 String realstring = "&&&.&&&&"; String[] partsOfString = realstring.split("\\."); String part1 = partsOfString[0]; String part2 = partsOfString[1]; System.out.println(part1); 

这将打印预期的结果

&&&

它也很方便测试给定的字符串是否包含此字符。 你可以这样做:

 if (string.contains(".")) { // Split it. } else { throw new IllegalArgumentException("String " + string + " does not contain ."); }