プロパティファイルがあります
{Content}
com.some.that.file.txt = com.some.dest
com.fold.cust.dir = com.some.dest
ここで、キーは{Value}=com.some.destにコピーするディレクトリの名前を示します
ドットを「/」に置き換えましたが、これではファイル名を保持できません。たとえば、file.txtはfile/txtになります。
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)
場合にのみスラッシュを一致させ、その後、正規表現を使用してすべてに一致させます。.*