Java 如何从长字符串中提取特定字符串

Java 如何从长字符串中提取特定字符串,java,regex,string,split,Java,Regex,String,Split,我有以下字符串(它是可变的,但类路径总是相同的): 我只想 de.test.class.mho.communication.InterfaceXmlHandler 从这根绳子里拿出来。结局 InterfaceXmlHandler 是变量,也是“de”之前的开头,路径本身也是变量,但是 de.test.class.mho. 不是变量。为什么不直接使用 String result = str.substring(str.lastIndexOf("de.test.class.mho."));

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

我只想

de.test.class.mho.communication.InterfaceXmlHandler
从这根绳子里拿出来。结局

InterfaceXmlHandler
是变量,也是“de”之前的开头,路径本身也是变量,但是

de.test.class.mho.
不是变量。

为什么不直接使用

String result = str.substring(str.lastIndexOf("de.test.class.mho."));
为什么不直接使用

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

您可以去掉字符串的开头,而不是拆分:

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");

您可以去掉字符串的开头,而不是拆分:

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");

可以使用创建字符串数组。数组将包含两个字符串,第二个字符串将是您想要的

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
}

可以使用创建字符串数组。数组将包含两个字符串,第二个字符串将是您想要的

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
}

您可以使用
replaceAll()
来“提取”所需的零件:

String part = str.replaceAll(".*(?=de\\.test\\.class\\.mho\\.)", "");
这将使用前瞻查找目标之前的所有字符,并将它们替换为空白字符(即删除它们)


为了简洁起见,您完全可以忽略对点的转义:

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

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

您可以使用
replaceAll()
来“提取”您想要的零件:

String part = str.replaceAll(".*(?=de\\.test\\.class\\.mho\\.)", "");
这将使用前瞻查找目标之前的所有字符,并将它们替换为空白字符(即删除它们)


为了简洁起见,您完全可以忽略对点的转义:

String part = str.replaceAll(".*(?=de.test.class.mho.)", "");
我怀疑这会产生不同的结果