2014-02-14 50 views
0
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: 0System.out.println。我看了,也找不出來。謝謝您的幫助。陣列有問題,也許分裂

+8

split將regexp作爲參數,而不是文字字符串。你必須逃避這一點。或者你也可以簡單地使用indexOf('。')和substring()。 –

+1

@JBNizet我覺得這應該是答案:) –

+1

我屈服於壓力:) –

回答

8

split()將regexp作爲參數,而不是文字字符串。你必須逃脫點:

string.split("\\."); 

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

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

如果我們的目標是獲得一個雙的整數部分,你也可以簡單地使用

long truncated = (long) doubleValue; 
+0

但爲什麼數組是空的?這是另一半的難題:) –

+0

我會讓你爲此添加一個答案。我討厭正則表達式:) –

+2

要分割,我真的更喜歡使用Guava的Splitter,它更合乎邏輯,可預測,高效且易於使用:http://code.google.com/p/guava-libraries/wiki/StringsExplained#Splitter –

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

split使用正則表達式作爲參數,並在正則表達式.的意思是「除了行分隔符的任何字符」,所以你可以指望"a.bc".split(".")將創建空字符串數組一樣["","","","",""]。只有它是不會發生的原因是因爲(從splitjavadoc

此方法的工作方式類似於與給定的表達和爲零的限制參數調用兩參數split方法。 因此尾隨的空字符串不包含在結果數組中。

因爲所有的字符串都是空的,所以你得到空數組(因爲你看到了ArrayIndexOutOfBoundsException)。

要關閉移除機制,您必須使用split(regex, limit)版本,並使用負號limit

拆就.文字你需要\.逃脫它(在Java需要寫成"\\."因爲\也是元字符的字符串)或[.]或其他正則表達式機制。

+1

+1用於解釋發生異常的原因。 –

+0

感謝您的解釋,謝謝 – Lifetake

+0

@Letadeke沒問題。很高興你喜歡 :) – Pshemo