2017-05-22 22 views
0

我必須在使用String :: substring的以下簽名的非常舊的代碼(2005之前)中執行錯誤修正。Java String ::過去的子串更改

public String substring(int beginIndex, int endIndex) 

現在它包含從beginIndex到endIndex-1的每個字符。是否有可能在過去也包含endIndex上的字符?

在它看起來像下面的代碼:

String str = line.substring(119, 120); 

和它相比,2個字母串。 有沒有人有關於此的任何信息?

+2

在Java2中,它仍然排除endIndex:https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#substring(int,%20int) –

+0

不是可能的話,我會說(請注意,Java版本的javadoc仍然可用並公開) –

+1

我不得不假設這是編寫代碼的開發人員的錯。那些從事Java工作的人對於向後兼容性有着堅定的承諾,我不會看到他們改變這樣的事情。我一直都知道結尾索引是排他性的。 – Logan

回答

1

簽名或String#substring(int beginIndex, int endIndex)方法的工作從未改變。

自從2003年左右開始,我就一直在研究Java,我知道它一直如此。您可以驗證你的Java版本在所有這些年來運行你的代碼,並從Oracle的檔案你在哪裏得到的文檔進行回Java 1.1一路檢查相應的文檔:

http://www.oracle.com/technetwork/java/archive-139210.html

看看。

String#substring


希望這有助於!