替换文本文件中第二次出现的Word

时间:2015-02-20 18:00:41

标签: java

我的文字文件中有一句话,

  

此外,人血清可以以 CD14 依赖性方式显着增强LPS诱导的DV抑制,表明LPS与 CD14 的“结合”对于诱导病毒抑制。

如何将第二次出现的CD14替换为AB45并回写到文本文件?

2 个答案:

答案 0 :(得分:0)

对于算法本身,

file.indexOf("CD14", file.indexOf("CD14")+4)

可用于定位出现(假设“file”是包含文件所有内容的字符串)。 “indexOf”的第二个参数要求一个起点。通过调用indexOf两次,你会发现字符串的第一个实例,而不是检查跳过第一个实例的另一个实例(+4,因为indexOf将返回字符串的开头,添加字符串的长度会跳过它)。要替换字符串,

int i = file.indexOf("CD14", file.indexOf("CD14")+4);
String s = file;
if(i != -1) s = file.substring(0,i) + "AD25" + file.substring(Math.min(i+4,file.length()), file.length());

如果您正在询问如何阅读/撰写文本文件,请尝试使用Google。一个例子 - Java: How to read a text file,另一个例子 - http://www.javapractices.com/topic/TopicAction.do?Id=42

答案 1 :(得分:0)

有几种方法可以解决这个问题。一个非常简单但冗长的方法是:

public static void replaceSecondOccurence(String originalText, String replacementText) throws IOException {
    File file = new File("file.txt");
    InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
    StringBuilder fileContent = new StringBuilder();
    int content;
    while ((content = reader.read()) != -1) {
        fileContent.append((char) content);
    }
    reader.close();

    int index = fileContent.lastIndexOf(originalText);
    fileContent.replace(index, index + originalText.length(), replacementText);

    OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file));
    writer.write(fileContent.toString());
    writer.close();
}