有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 ."); }