Java搜索替换

时间:2010-08-27 21:56:44

标签: java replace treemap

我想在java的帮助下进行搜索和替换。

我有包含文件名及其内容的TreeMap。我有另一个包含单词及其含义的TreeMap。

我想搜索文件内容并用其含义替换找到的单词。

由于

P.S:这不是任务。我用简单的阅读文件和替换功能。但是,我需要快速的方法来做到这一点。任何示例代码或参考。将不胜感激。

4 个答案:

答案 0 :(得分:1)

让我给你一些一般性的开发建议,以便在遇到问题时提供帮助。

首先,记下一个列表 - 您认为可以解决问题的算法。在你的情况下尝试:

  • 对于treemap 1中的每个文件
  • 对于该文件中的每个条目
  • 对于当前文件中的每一行
  • 在第二个树形图中搜索每个术语
  • 对于每个找到的术语,替换为定义。

现在,进入每个步骤并加强它。对于第一个你应该

  • 迭代treemap 1中的文件列表
  • 打开下一个文件
  • 开始阅读内容

对于您目前无法想象的“正在编码”的每个步骤执行此操作,直到您可以了解如何执行每个步骤。

完成此操作后,我建议编写一个非常基本的应用程序,从列表中执行一项操作 - 例如,打开一个文件。在这里写一个junit测试或在你的主要编写测试是非常有帮助的。确保它打开文件并可以从中读取。

一旦你到了这一步,继续添加你的代码 - 只需添加一点然后重新编译/重新测试。重新测试每一行,直到你编码了5年,然后去每2或3行。

不断更新测试以测试代码。如果你打破旧的测试重写它,不要扔掉它。

迭代。

我希望这会有所帮助。

答案 1 :(得分:0)

基础可能是:

  • 遍历entrySet
  • 为每个条目获取值
  • 将该值拆分为单词
  • 为每个单词查找词典中的单词
  • 如果发现将该词添加到您翻译的字符串构建器
  • 否则添加原始
  • 添加空格
  • 使用stringbuilder.toString
  • 在地图条目上设置值

答案 2 :(得分:0)

此示例适用于实现地图界面的所有类,而不仅仅是TreeMap:

public void searchAndReplace(Map<File, byte[]> fileToContentMap, Map<String, String> wordToDefinitionMap) {

    // for each file
    for (File f : fileToContentMap.keySet()) { 
        // get the file's contents
        String contents = new String(fileToContentMap.get(f));

        // replace the contents with definitions
        for (String word : wordToDefinitionMap.keySet()) {
          contents = contents.replaceAll(word, wordToDefinitionMap.get(word));   
        }

        // make sure to update the contents in the array
        fileToContentMap.put(f, contents.getBytes());

        // note, remember to update the physical file as well

    }
}

答案 3 :(得分:0)

我不会使用TreeMap存储所有文件 + 的内容。
无论如何你需要阅读内容,所以首先存储所有内容 + 没有任何好处。
一次读取一个文件,处理并保存。

看一下Java的NIO包。在NIO examples page上有一个搜索文件列表的例子(Grep.java)。

+ 如果不需要{others}