2014-04-04 39 views
0

我試圖看看是否有一種方法可以跳過這兩個子字符串函數的開始和結束索引,因爲子字符串傳統上包括開始和排除結束索引。 例如,在Java子串中跳過開始和結束字符索引的方法?

String str="Hello 42 World!"; 
int hello=str.indexOf("Hello"); 
int world=str.indexOf("World!"); 
int fortytwo=customSubstringMethod(str,hello,world);//should be 42. 

如何可以做到這一點的任何見解將不勝感激!

回答

3

,不檢查錯誤情況的快速和骯髒的解決方案:

public static void main(String[] args) { 
    String str="Hello 42 World!"; 
    System.out.println(customSubstringMethod(str, "Hello", "World!")); 
} 

private static String customSubstringMethod(String str, String start, String stop) { 
    return str.substring(str.indexOf(start) + start.length(), str.indexOf(stop)); 
} 

此外,您需要了解更多的則前綴字符串的索引。長度也是必需的。

-1

有是Java API中沒有這樣的方法,但你可以創建一個包裝要做到這一點:

public static String customSubstring(String str, int start, int end) { 
    return str.substring(start+1,end); 
} 

順便說一句,小心的indexOf,它總是返回的第一個字符的索引發生:

String str="Hello 42 World!"; 
int hello=str.indexOf("Hello"); //returns 0 
int world=str.indexOf("World!"); // returns 9 
int fortytwo=customSubstring(str,hello,world);//returns "ello 42 " 

所以對於第一個索引,你應該使用:

String h="Hello"; 
int hello=str.indexOf(h)+h.length; 
+0

start + 1如何解決問題? – Harmlezz

+0

@Harmlezz OP只是要求一個方法來排除兩個索引,而indexOf包含起始索引。 –

+0

我在例子中非常清楚地提到它應該返回「42」而不是「ello 42」。顯然這並不能解決問題。 – KodeSeeker

0

Tr的y this,

private static String subStringMethod(String value,String start, String end) 
{ 
    return value.substring(value.indexOf(start)+start.length(), value.indexOf(end)).trim(); 
} 
相關問題