我有這個字符串:得到一個字符
String code="abc";
我想substring
方法提取的「C」從這個字符串,但它不工作:
String code="abc";
String getsmscode=code.substring(2,1);
此代碼返回一個錯誤
java.lang.StringIndexOutOfBoundsException: length=3; regionStart=2; regionLength=-1
但我不知道爲什麼?
我有這個字符串:得到一個字符
String code="abc";
我想substring
方法提取的「C」從這個字符串,但它不工作:
String code="abc";
String getsmscode=code.substring(2,1);
此代碼返回一個錯誤
java.lang.StringIndexOutOfBoundsException: length=3; regionStart=2; regionLength=-1
但我不知道爲什麼?
您需要閱讀the documentation for substring - 第二個參數是不是一個長度,它的結束索引(不包括)。
參數:
beginIndex
- 開始索引(包括)。
endIndex
- 結束索引,獨佔。
如果有疑問,閱讀文檔...
還要注意的是,如果你只是想獲得最後一個字符,你可以只使用單參數過載,從返回一個字符串給定起點到字符串的結尾:
String lastCharacter = text.substring(text.length() - 1);
或者你可以把它作爲一個單一的字符:
char lastCharacter = text.charAt(text.length() - 1);
第二個參數不是長度,它是an end index。
String#substring(int beginIndex, int endIndex)
的從0開始的索引,您可以嘗試
String code="abc";
String getsmscode=code.substring(2);
這不會提取最後一個字符。 OP剛剛誤解了第二個參數。 – 2013-03-13 15:34:21
我覺得子需要開始索引或開始索引和結束索引作爲參數:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
你給它一個開始指數大於而不是結束指數,因此它會變得混亂,因爲返回的長度是負值。交換1和2。
交換1和2將返回b。結束索引字符被排除。 – 2013-03-13 15:37:37
是的。我更加反應了人們缺乏對功能預期的參數的理解,而不是提供一個確切的解決方案。道歉,下次我會遵守規則。 – 2013-03-13 19:06:31
使用也可以達到這個效果。
String getsmscode = code.substring(2,3);
方法描述
public String substring (int start, int end)
返回包含的字符從該字符串的子序列的字符串。返回的字符串共享此字符串的後備數組。
參數
開始 - 偏移量的第一個字符。
end-最後一個字符後面的偏移量。
返回包含字符從開始到結束的新字符串 - 1
拋出
以上傢伙已經充分回答了你的問題,但只是在閱讀API的一些技巧。
方法通常以public一詞開始,然後包含返回類型......這是什麼類型的數據將被返回。如果預計沒有任何回報是無效的。
然後出現方法的名稱和兩個括號。
括號之間是它接受的參數類型。
這個特殊的方法它接受兩個整數。這些幫助保持一個索引,你想保持多少字符串
索引是一個重要的概念,要理解,很難描述它是如何工作的話,但看在api描述列表幫助中的例子幫助。
index-1通常意味着從0開始計數,所以在字符串「Hello World」中,H的索引爲0,d的索引爲10.注意,只有9個字母,但我們仍然必須包含空格作爲字符,因此它是索引在這種情況下是5.
重要的是要注意api提及排除和包括在參數說明中。這只是表示返回的字符串將包含由第一個參數索引的字母,但不包括由第二個參數索引的字母。
如果你需要做的就是提取一個字符串,最後一個字母無論字符串大小了多久,一個簡單的解決方案是
stringName.substring(stringName.length()-1);
感謝你的完美單詞......謝謝。我解決了我的問題 – Fcoder 2013-03-13 18:41:37
當然,你是第一個) – bsiamionau 2013-03-13 15:33:02
@喬恩飛碟雙向!但是當我這樣做:substring(2,1);我沒有得到任何東西! – Fcoder 2013-03-13 15:33:15
@FarhadShirzad:不,你會得到一個異常......如果你使用'substring(2,3)',你會得到最後一個字符。 – 2013-03-13 15:33:37