在Java中搜索文件中的子字符串,返回行和位置

时间:2012-11-24 12:47:47

标签: java substring bufferedreader

我想编写一个程序,它将字符串作为输入,在java文件中搜索字符串并输出行和它出现的位置。

我的主要问题是为我的结果创建一个“存储”。 我不能使用列表,所以我想用2维数组[] []来解决这个问题。但我不能只为每一行添加一个新的第一级元素,而为每个位置附加第二级元素。

我必须知道有多少字符串可以创建数组,不是吗?

我的主要想法:我需要通过input.readLine()读取一行,如果子串在该行中,则使用indexOf()进行检查。如果是,我保存positiona并继续我的搜索,直到它返回-1。我继续直到input.readLine返回null。 如果这个概念是正确的,我只需要解决“存储”问题。

1 个答案:

答案 0 :(得分:0)

您可以使用multimap。

    HashMap<String, List<Integer>> map = new HashMap<String, List<Integer>>();
    ArrayList<Integer> lineAndPosition = new ArrayList<Integer>();
    lineAndPosition.add(1); //line number
    lineAndPosition.add(23); //position number 
    map.put("key", lineAndPosition);

所以每个键都会映射到一个数组,该数组将存储出现的行号和位置。