我有一個String s = 'muniganesh'
,如果我打印s.subString(1, 2)
的值,則輸出爲'u'
,因爲在Java字符串中,索引從0開始。但是我需要將字符串更改爲以索引位置1.怎麼可能?如何使字符串索引從1開始
回答
你可以編寫自己的實用方法處理兩個#substring(開始,結束)參數作爲零基指數(或一個基於索引的,如果你願意的話),但@irrelephant說不是建議您應該習慣Java如何處理這些特殊情況:第一個參數是零基,而第二個參數是一個基於。 String#substring
不是唯一的例子,也有StringBuilder#delete
,應該有更多。
可能動機可以通過簡單地增加長度到開始位置而無需額外增量被計算端位置。例如: -
String source = "In Java world, end position index may be one-based";
int indexOfP = source.indexOf('p');
String result = source.substring(indexOfP, indexOfP + 8);
System.out.println(result); // prints 'position'
這不是最好的例子,而真正的動機可能會有所不同,但它是我記得這個特點。
結束索引不是基於一個的。例如,0是一個合法的最終索引,如果它是基於一個索引的話,它不會是。兩個索引都是從零開始的,但最終索引是* exclusive *,而開始索引是包含性的。 – Boann 2015-01-17 16:25:09
嘗試指數從0開始
myString = myString.substring(1); // will give "uniganesh"
Java數組和字符串(以及大多數其他語言的陣列)使串一個長,根本不使用的第一個索引,或者從1使用索引string.length並簡單地減去一個,當你實際索引到字符串。
如果你真的想,你可以寫一個方法:
public static String substring(String str, int beginIndex, int endIndex) {
return str.substring(beginIndex - 1, endIndex - 1);
}
但我強烈建議你不這樣做,因爲你可能混淆s.substring()
和自己substring()
和1個錯誤下車。只是習慣於Java處理字符串的方式,並使用s.substring()
。許多其他流行語言像Java一樣以0開始字符串索引。
錯誤的部分是'endIndex - 1'。這個值是從1開始的索引,而'beginIndex'是從0開始的索引。 – 2012-08-01 06:37:01
最後兩句話在這裏很重要(這個例子可能會被廢棄)。 **只是習慣於Java處理字符串的方式,並使用's.substring()'。許多其他流行語言像Java一樣在0開始字符串索引。** – 2012-08-01 06:41:25
@LuiggiMendoza這沒有錯。這兩個索引都是基於0的,這就是爲什麼0是結束索引的合法值的原因。但是,最終指數是排他性的,而開始指數是包含性的。 – Boann 2015-01-17 16:29:07
Java字符串索引從o和d開始一直到字符串長度-1。
所以如果你使用
String s =「muniganesh」;
s = s.substring(1,2);// output u
System.out.println(""+ s.substring(1)); //output String s = "muniganesh";
- 1. 如何從開始索引讀取字符串
- 2. 從字符串開始索引到結束字符陣列
- 3. 從readline開始的字符串從1開始在python中?
- 4. 如何從字符串的末尾開始獲取字母索引?
- 5. each_with_index_do從1開始的索引
- 6. PLPGSQL數組索引從1開始?
- 7. jquery - 從1開始的索引元素?
- 8. 爲什麼sqlite3_bind_ *從索引1開始,但sqlite3_column_ *從0開始?
- 9. 如何(從文)開始,字符串
- 10. 如何從0開始陣列時,索引從1
- 11. 格式的初始化字符串不符合規範從索引0開始
- 12. 如何創建一個數組,其索引從1開始
- 13. 如何更改數組索引從1開始?
- 14. SQL - 如何匹配字符串模式從字符串內部的隨機索引開始
- 15. 字符串索引超出範圍:-1。
- 16. 字符串索引超出範圍:-1
- 17. 字符串索引超出範圍:-1
- 18. Javascript Algolia - 如何用空搜索字符串開始新搜索?
- 19. 如何從索引0,1或2開始每隔三個索引分割一個字符串?
- 20. 如何解決「初始化字符串的格式不符合從索引0開始的規範」
- 21. re.scanner只搜索字符串的開始
- 22. 如何從字符串開始複製4個字符到字符串結束?
- 23. 使用字符串索引
- 24. 剝離一個字符串並獲取開始索引和結束索引
- 25. 開始索引不能大於字符串的長度
- 26. 查找索引,其中char c以字符串s開始
- 27. 搜索字符串的開始和在同一個字符串
- 28. 如何擺脫字符串索引超出範圍:-1在iText
- 29. 創建JSON數組索引開始1
- 30. 鼠標點擊座標索引從0開始還是從1開始?
假設'int startIndex'將在[1..s.length()]內,你可以做's.substring(startIndex-1,finish)'。而且,這個String#subString結尾的'int finish'將是1-index。 – 2012-08-01 06:26:56
我已經完成了你的建議。但我需要知道我的方案的任何解決方案。 – MGPJ 2012-08-01 06:32:46
編輯顯示輸入和預期輸出的問題,以更好地理解您的需求。如果您發佈的輸入/輸出樣本超過1個,會更好。 – 2012-08-01 06:34:21