2012-08-01 656 views
1

我有一個String s = 'muniganesh',如果我打印s.subString(1, 2)的值,則輸出爲'u',因爲在Java字符串中,索引從0開始。但是我需要將字符串更改爲以索引位置1.怎麼可能?如何使字符串索引從1開始

+0

假設'int startIndex'將在[1..s.length()]內,你可以做's.substring(startIndex-1,finish)'。而且,這個String#subString結尾的'int finish'將是1-index。 – 2012-08-01 06:26:56

+0

我已經完成了你的建議。但我需要知道我的方案的任何解決方案。 – MGPJ 2012-08-01 06:32:46

+0

編輯顯示輸入和預期輸出的問題,以更好地理解您的需求。如果您發佈的輸入/輸出樣本超過1個,會更好。 – 2012-08-01 06:34:21

回答

3

你可以編寫自己的實用方法處理兩個#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

結束索引不是基於一個的。例如,0是一個合法的最終索引,如果它是基於一個索引的話,它不會是。兩個索引都是從零開始的,但最終索引是* exclusive *,而開始索引是包含性的。 – Boann 2015-01-17 16:25:09

0

嘗試指數從0開始

myString = myString.substring(1); // will give "uniganesh" 
0

Java數組和字符串(以及大多數其他語言的陣列)使串一個長,根本不使用的第一個索引,或者從1使用索引string.length並簡單地減去一個,當你實際索引到字符串。

6

如果你真的想,你可以寫一個方法:

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開始字符串索引。

+1

錯誤的部分是'endIndex - 1'。這個值是從1開始的索引,而'beginIndex'是從0開始的索引。 – 2012-08-01 06:37:01

+2

最後兩句話在這裏很重要(這個例子可能會被廢棄)。 **只是習慣於Java處理字符串的方式,並使用's.substring()'。許多其他流行語言像Java一樣在0開始字符串索引。** – 2012-08-01 06:41:25

+0

@LuiggiMendoza這沒有錯。這兩個索引都是基於0的,這就是爲什麼0是結束索引的合法值的原因。但是,最終指數是排他性的,而開始指數是包含性的。 – Boann 2015-01-17 16:29:07

0

Java字符串索引從o和d開始一直到字符串長度-1。

所以如果你使用

String s =「muniganesh」;

s = s.substring(1,2);// output u 


System.out.println(""+ s.substring(1)); //output String s = "muniganesh"; 
相關問題