3

私は次の問題の良い解決策があるかどうか疑問に思っていました:

ファイルへの絶対パスを含む文字列があり、ファイルのプレフィックスが「temp_」であると仮定します。string.replaceFirst()でプレフィックスをトリミングできます。

しかし、運が悪ければ、「temp_」もその文字列のディレクトリの一部です。最後の発生のみがトリミングされるようにするにはどうすればよいですか?

私はそれを自分で解析することしか考えられませんが、それをより良い方法で行うための魔法が残っているかどうか疑問に思っていましたか?

例としてより正確に言うと:

C:\Dump\sol1\temp_results\temp_2012-04-core.pcap

次のようになります。

C:\Dump\sol1\temp_results\2012-04-core.pcap
4

3 に答える 3

4

を使用するPath.getFileName()と、ファイルのベース名のみが返されます (つまり、親ディレクトリは含まれません)。それを代入して、他のパス関数 ( 、 などを参照getName())subpath()を使用して別のパスまたは単一の文字列に戻すことができます。

于 2012-05-11T10:03:53.123 に答える
3

あなたがそれを持っている場合は、@goldilocks のアプローチを使用してファイル ID デフォです。しかし、何らかの理由で単に文字列として持っている場合、最初に頭に浮かんだのは次のとおりです。

    String target = "temp_";

    String fullPath = "C:/Dump/sol1/temp_results/temp_2012-04-core.pcap";

    StringBuffer sb = new StringBuffer(fullPath);
    int end = fullPath.lastIndexOf(target) + target.length();

    System.out.println(sb.replace(fullPath.lastIndexOf(target), end, ""));
于 2012-05-11T10:05:27.053 に答える
0

これは、その方法のもう 1 つの例です。

全ストリングを 3 つの部分に分割します。

1.substring till temp_ last occurence

2.last occuerence of temp_

3.substring after last occuerence of temp_

とにかく1 + 3をcancat @goldilocksソリューションをお勧めします

于 2012-05-11T10:30:23.663 に答える