假设我们有一个数组项列表
例如: - a,b,c,d
需要从一个充满数据的文件中删除,我遗漏了一些东西,任何人都可以帮助我实现这一点,提前感谢
public static void rmvFromXML(String strFilePath,
String strTmpFilePath) throws IOException {
String currentLine = "";
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
BufferedReader reader = new BufferedReader(new FileReader(strFilePath));
BufferedWriter fileWriter = null;
fileWriter = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(strTmpFilePath)));
while ((currentLine = reader.readLine()) != null) {
String trimmedLine = currentLine.trim();
System.out.println("Trimmed Line :- " + trimmedLine);
for (String value : list) {
System.out.println("Array Value:- " + value);
if (trimmedLine.equals(value))
continue;
fileWriter.write(trimmedLine + System.getProperty("line.separator"));
}
}
fileWriter.close();
reader.close();
}
答案 0 :(得分:1)
你可以使用正则表达式。这样你就不必迭代并检查是否 line包含你的字符串
while ((currentLine = reader.readLine()) != null) {
Pattern removeWords = Pattern.compile("\\b(?:a|b|c|d)\\b\\s*", Pattern.CASE_INSENSITIVE);
Matcher fix = removeWords.matcher(currentLine);
String fixedString = fix.replaceAll("");
}
尝试使用上述方法
input :
abcdefg
output
efg
答案 1 :(得分:1)
您需要在文件的行中替换每次出现的子字符串,因此请将其替换为空格:
public static void rmvFromXML(String strFilePath,
String strTmpFilePath) throws IOException {
String currentLine = "";
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
BufferedReader reader = new BufferedReader(new FileReader(strFilePath));
BufferedWriter fileWriter = null;
fileWriter = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(strTmpFilePath)));
while ((currentLine = reader.readLine()) != null) {
String trimmedLine = currentLine.trim();
System.out.println("Trimmed Line :- " + trimmedLine);
for (String value : list) {
System.out.println("Array Value:- " + value);
trimmedLine = trimmedLine.replaceAll(value, "");
}
fileWriter.write(trimmedLine + System.getProperty("line.separator"));
}
fileWriter.close();
reader.close();
}
现在输入:
sdfsdf
sdfsdf
sfsdfs
fa
a
b
c
asdasdad
d
asdasd
我们得到输出:
sfsf
sfsf
sfsfs
f
ss
ss
答案 2 :(得分:0)
替换:
for (String value : list) {
System.out.println("Array Value:- " + value);
if (trimmedLine.equals(value))
continue;
fileWriter.write(trimmedLine + System.getProperty("line.separator"));
}
由:
bool found=false:
for (String value : list) {
System.out.println("Array Value:- " + value);
if (trimmedLine.equals(value))
found=true;
}
if(!found)
fileWriter.write(trimmedLine + System.getProperty("line.separator"));
fileWriter.write调用应该在&#34; for&#34;之外。循环。