String realstring = "&&&.&&&&";
Double value = 555.55555;
String[] arraystring = realstring.split(".");
String stringvalue = String.valueof(value);
String [] valuearrayed = stringvalue.split(".");
System.out.println(arraystring[0]);
抱歉,如果它看起来很糟糕。在我的手机上重写了。我一直在ArrayIndexOutOfBoundsException: 0
获得System.out.println
。我看了,无法搞清楚。谢谢你的帮助。
答案 0 :(得分:8)
split()
将regexp作为参数,而不是文字字符串。你必须逃避点:
string.split("\\.");
或
string.split(Pattern.quote("."));
或者您也可以使用indexOf('.')
和substring()
来获取字符串的两个部分。
如果目标是获得double的整数部分,你也可以简单地使用
long truncated = (long) doubleValue;
答案 1 :(得分:7)
split
使用正则表达式作为参数,而正则表达式.
表示“除行分隔符之外的任何字符”,因此您可以期望"a.bc".split(".")
创建空字符串数组,如{{1} }。唯一原因是因为(来自["","","","",""]
javadoc)
此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。 因此,结尾数组中不包含尾随空字符串。
因为所有字符串都是空的,所以你得到空数组(这是因为你看到split
)。
要关闭删除机制,您必须使用ArrayIndexOutOfBoundsException
版本为负split(regex, limit)
。
要拆分limit
字面值,您需要使用.
(在Java中需要将其写为\.
来转义它,因为"\\."
也是字符串元字符)或{ {1}}或其他正则表达式机制。
答案 2 :(得分:2)
点(。)是一个特殊字符,因此您需要将其转义。
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 .");
}