我需要读取一个文件并仅获取以.csv结尾的文件名。该文件将包含以下几行
-dataFileName ABC.csv -command ii
-dataFileName EFG.csv -command ii
-dataFileName HIJ.csv -command ii
-dataFileName MNPQR.csv -command ii
-dataFileName UVXYZ.csv -command ii
我们可以看到 -dataFileName [XXXX] -命令ii 是重复的
我想要 ABC .csv, EFG .csv, HIJ .csv, MNPQR .csv,< em> UVXYZ .csv,作为我的控制台输出。
答案 0 :(得分:0)
如果您只是想在字符串中利用-dataFileName和-command ii的重复,则可以使用Java简单地做到这一点,
replaceAll("-dataFileName| -command ii", "")
并编写类似这样的代码
public static void main(String args[]) throws Exception {
List<String> list = Arrays.asList(
"-dataFileName ABC.csv -command ii",
"-dataFileName EFG.csv -command ii",
"-dataFileName HIJ.csv -command ii",
"-dataFileName MNPQR.csv -command ii",
"-dataFileName UVXYZ.csv -command ii"
);
list.forEach(x -> {System.out.println(x + " --> " + x.replaceAll("-dataFileName| -command ii", ""));});
}
这将提供以下输出,
-dataFileName ABC.csv -command ii --> ABC.csv
-dataFileName EFG.csv -command ii --> EFG.csv
-dataFileName HIJ.csv -command ii --> HIJ.csv
-dataFileName MNPQR.csv -command ii --> MNPQR.csv
-dataFileName UVXYZ.csv -command ii --> UVXYZ.csv
如果您不喜欢这样,可以使用此简单的正则表达式来完成工作,
-dataFileName (.*?) -command ii
并捕获第1组。
答案 1 :(得分:0)
我不明白为什么要为此使用正则表达式。您可以轻松地为它编写一个简单的解析器,当您的需求发生变化时它不会引起问题(需要处理报价?解析器足够容易,正则表达式很混乱)。
执行此操作的示例程序:
setPlaybackQuality