【问题标题】:Deleting a specific part of a text file删除文本文件的特定部分
【发布时间】:2015-01-28 19:03:48
【问题描述】:

所以我有一个存储日期的程序。

这是计算文件中日期数的函数。

public static int getLineCount() throws FileNotFoundException {

    System.out.println("Line count called");
    int datenumber = 0;
    int attrnumber = 0;
    try {
        Scanner readLine = new Scanner(new FileReader(dates));
        readLine.useDelimiter("<>");
        while (readLine.hasNext()) {

            readLine.next();

            if (attrnumber == 3) {

                datenumber++;
                attrnumber = 0;

            } else {
                attrnumber++;
            }
        }
    } catch (IOException e) {
        System.out.print("Cannot read file!");
    }
    ;
    System.out.println("Line count is: " + datenumber);
    return datenumber;

}

这是文件的样子

14<>7<>2014<>sdfsdf<>14<>4<>2016<>asdas<>

格式为 DAYMONTHYEARNAME

假设我有 3 个日期存储,我想删除第二个日期,我该怎么做?

我可以在这里使用相同的代码,但是一旦它到达我想要删除的位置,它会以某种方式删除数据吗?

我有

DAY1<>MONTH1<>YEAR1<>NAME1<>DAY2<>MONTH2<>YEAR2<>NAME2<>DAY3<>MONTH3<>YEAR3<>NAME3<>

我想要

DAY1<>MONTH1<>YEAR1<>NAME1<>DAY3<>MONTH3<>YEAR3<>NAME3<>

【问题讨论】:

    标签: java java.util.scanner filereader


    【解决方案1】:
    public static void main(String args[]){
        String str = "DAY1<>MONTH1<>YEAR1<>NAME1<>DAY2<>MONTH2<>YEAR2<>NAME2<>DAY3<>MONTH3<>YEAR3<>NAME3<>";
        System.out.println(remove(str, "<>", 4, 2));
    
    
    }
    /**
     * 
     * @param sentence your main sentence
     * @param delimeter delimeter which sentence contains like <>
     * @param range range of line, for this example as you can see each row contains 4 items, so its range is 4
     * @param removed_range, whing range is removed, for example 2 range etc
     * @return
     */
    public static String remove(String sentence, String delimeter, int range, int removed_range){
        String str= "";
        ArrayList<String> items = new ArrayList<>();
        if(sentence.contains(delimeter)){
            items.addAll(Arrays.asList(sentence.split(delimeter)));
        }
        int cnt = 0;
        for(String item : items){
            if(cnt<range || cnt>= removed_range*range)
                str+=item+delimeter;
            cnt++;
        }
    
        return str;
    }
    

    结果:

    DAY1<>MONTH1<>YEAR1<>NAME1<>DAY3<>MONTH3<>YEAR3<>NAME3<>
    

    【讨论】:

      猜你喜欢
      • 2022-11-22
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2020-08-08
      • 1970-01-01
      相关资源
      最近更新 更多