簡體   English   中英

數組有麻煩,也許分裂

[英]having trouble with arrays and maybe 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]);

不好意思,不好意思。 在我的手機上重寫。 我一直在System.out.println得到ArrayIndexOutOfBoundsException: 0 我已經看了,無法弄清楚。 謝謝您的幫助。

split()則表達式作為參數,而不是文字字符串。 您必須逃脫圓點:

string.split("\\.");

要么

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

或者,您也可以簡單地使用indexOf('.')substring()來獲取字符串的兩個部分。

如果目標是獲取雙精度數的整數部分,則也可以使用

long truncated = (long) doubleValue;

split在regex中使用正則表達式作為參數. 表示“除行分隔符外的任何字符”,因此您可以期望"a.bc".split(".")會創建空字符串數組,例如["","","","",""] 只有它是不會發生的原因是因為(從split 的javadoc

該方法的工作方式就像通過調用具有給定表達式且限制參數為零的二參數拆分方法。 因此,結尾的空字符串不包括在結果數組中

因此,因為所有字符串都是空的,所以您會得到一個空數組(這是因為您看到ArrayIndexOutOfBoundsException )。

要關閉刪除機制,您必須使用帶有負limit split(regex, limit)版本。

分裂. 文字,您需要使用\\.對其進行轉義\\. (在Java中需要寫為"\\\\."因為\\也是Strings元字符)或[.]或其他正則表達式機制。

點(。)是特殊字符,因此您需要對其進行轉義。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM