2

プロパティファイルがあります

{Content}
com.some.that.file.txt = com.some.dest
com.fold.cust.dir = com.some.dest

ここで、キーは{Value}=com.some.destにコピーするディレクトリの名前を示します

ドットを「/」に置き換えましたが、これではファイル名を保持できません。たとえば、file.txtはfile/txtになります。

4

1 に答える 1

6

String.replaceAll(regex, replacement)適切な正規表現で使用します。

String filename = value.replaceAll("\\.(?=.*\\.)", "/");

この正規表現はドットと一致しますが、一致したドットの後に別のドットがある場合にのみ、構文が含まれる「先読み」を使用してチェックします(?=regex)

テストは次のとおりです。

public static void main(String[] args) {
    String value = "com.some.that.file.txt";
    String filename = value.replaceAll("\\.(?=.*\\.)", "/");
    System.out.println(filename);
}

出力:

com/some/that/file.txt

編集:

ディレクトリ名を見つけるには、次を使用します。

String dirname = filename.replaceAll("/(?!.*/).*", "");

または1行で:

String dirname = value.replaceAll("\\.(?=.*\\.)", "/").replaceAll("/(?!.*/).*", "");

この追加の手順では、構文を含む「ネガティブルックアヘッド」を使用して、一致したスラッシュの後にスラッシュがない(?!regex)場合にのみスラッシュを一致させ、その後、正規表現を使用してすべてに一致させます。.*

于 2012-06-01T12:40:13.873 に答える