2013-06-26 4 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.)", ""); 

Я сомневаюсь, что это даст другой результат.