如何从长字符串中获取特定字符串

时间:2013-06-26 11:29:13

标签: java regex string split

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

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 个答案:

答案 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.)", "");

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