我有以下字符串(它是变量,但类路径总是相同的):
C:.Users.mho.Desktop.Eclipse.workspace.GIT.BLUBB...bin.de.test.class.mho.communication.InterfaceXmlHandler
我希望得到
de.test.class.mho.communication.InterfaceXmlHandler
这个字符串。结束
InterfaceXmlHandler
是变量,也是'de'之前的开头,路径本身也是可变的,但是
de.test.class.mho.
不变。
答案 0 :(得分:4)
为什么不使用
String result = str.substring(str.lastIndexOf("de.test.class.mho."));
答案 1 :(得分: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");
答案 2 :(得分: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
}
答案 3 :(得分:0)
您可以使用replaceAll()
“提取”所需的部分:
String part = str.replaceAll(".*(?=de\\.test\\.class\\.mho\\.)", "");
这使用前瞻来查找目标之前的所有字符,并将其替换为空白(即删除它们)。
为了简洁,你可以合理地忽略逃避点:
String part = str.replaceAll(".*(?=de.test.class.mho.)", "");
我怀疑它会给出不同的结果。