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.")で文字列配列を作成できます。配列には 2 つの文字列が含まれ、2 番目の文字列は必要なものになります。

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 に答える