0

我有以下字符串(它是可变的,但类路径始终相同):

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.

不是可变的。

4

4 回答 4

4

为什么不直接使用

String result = str.substring(str.lastIndexOf("de.test.class.mho."));
于 2013-06-26T11:32:28.867 回答
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");
于 2013-06-26T11:33:46.163 回答
0

您可以使用replaceAll()“提取”您想要的部分:

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

这使用前瞻来查找目标之前的所有字符,并将它们替换为空白(即删除它们)。


为简洁起见,您可以相当合理地忽略转义点:

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

我怀疑它会给出不同的结果。

于 2013-06-26T13:05:44.827 回答
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
}
于 2013-06-26T12:05:47.157 回答