2013-06-26 87 views
0

的,我有以下字符串(它是可變的,但類路徑始終是相同的):如何獲得特定串出長串

C:.Users.mho.Desktop.Eclipse.workspace.GIT.BLUBB...bin.de.test.class.mho.communication.InterfaceXmlHandler 

,我希望得到公正

de.test.class.mho.communication.InterfaceXmlHandler 

出這個字符串。最終

InterfaceXmlHandler 

是可變的,也是前「德」和路徑本身一開始就是變量太多,但

de.test.class.mho. 

不變量。

回答

4

爲什麼不直接使用

String result = str.substring(str.lastIndexOf("de.test.class.mho.")); 
1

分裂相反,你可以擺脫字符串的開頭:

String input = "C:.Users.mho.Desktop.Eclipse.workspace.GIT.BLUBB...bin.de.test.class.mho.communication.InterfaceXmlHandler"; 
String output = input.replaceAll(".*(de\\.test\\.class\\.mho.*)", "$1"); 
0

您可以創建一個字符串數組String.split("de.test.class.mho.")。該數組將包含兩個字符串,第二個字符串將是你想要的。

String longString = ""; //whatever 
String[] urlArr = longString.split("de.test.class.mho."); 
String result; 

if(urlArr.length > 1) { 
    result = "de.test.class.mho." urlArr[1]; //de.test.class.mho.whatever.whatever.whatever 
} 
0

您可以使用replaceAll()來「解壓」的一部分,你想:

String part = str.replaceAll(".*(?=de\\.test\\.class\\.mho\\.)", ""); 

它使用先行找到的所有字符前的目標,並以空白代替它們(即刪除它們)。


你可以相當合理忽略逃逸點爲簡潔:

String part = str.replaceAll(".*(?=de.test.class.mho.)", ""); 

我懷疑它會給出不同的結果。

相關問題