有阵列的麻烦,也许分裂

Lif*_*ake 0 java arrays split

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

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

JB *_*zet 8

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

string.split("\\.");
Run Code Online (Sandbox Code Playgroud)

要么

string.split(Pattern.quote("."));
Run Code Online (Sandbox Code Playgroud)

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

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

long truncated = (long) doubleValue;
Run Code Online (Sandbox Code Playgroud)

  • 为了拆分,我更喜欢使用Guava的Splitter,它更符合逻辑,可预测,高效且易于使用:http://code.google.com/p/guava-libraries/wiki/StringsExplained#Splitter (2认同)

Psh*_*emo 7

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

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

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

要关闭删除机制,您必须使用split(regex, limit)带负数的版本limit.

要在.文字上拆分,你需要使用\.(在Java中需要编写"\\."因为\也是字符串元字符)[.]或其他正则表达式机制来转义它.