删除文本中一段类容

pxl_1012 2014-01-27 04:54:26
例如:
文本开始
文本0
--##begin
要删除的文本
要删除的文本
--##end
文本1
文本结束

要求实现删除--##begin和--##end

...全文
146 点赞 收藏 7
写回复
7 条回复
ohfiner 2014年01月28日
如果你文件行数很多,思路只能就是读进内存,再写文件,不能操作原始那个文件
回复 点赞
ohfiner 2014年01月28日
读文件,读行,判断然后写文件
回复 点赞
兔子托尼啊 2014年01月28日
直接读取正则替换比较方便吧。
回复 点赞
ghostkngiht 2014年01月28日

        InputStreamReader read = null;
        try {
            FileWriter fw = new FileWriter("输出文件路径");
            read = new InputStreamReader(new FileInputStream(new File("输入文件路径")));
            BufferedReader br = new BufferedReader(read);
            String line = br.readLine();
            boolean deleted = false;
            while (line != null) {
                if (line.trim().equals("--##begin")) {
                    deleted = true;
                    fw.write("--##begin\r\n");
                } else if (line.trim().equals("--##end")) {
                    deleted = false;
                    fw.write("要插入的内容\r\n");
                    fw.write("--##end\r\n");
                } else if (!deleted) {
                    fw.write(line + "\r\n");
                }
                line = br.readLine();
            }
            br.close();
            read.close();
            fw.close();
        } catch (IOException ex) {
            ex.printStackTrace(System.err);
        }
回复 点赞
pxl_1012 2014年01月28日
引用 1 楼 dengsilinming 的回复:
是根据行进行删除么?
是的文本是一行一行的。删除标记之间的行,最终会的标记之间插入新的行。
回复 点赞
失落夏天 2014年01月27日
System.out.println(str.replaceAll("(?s)(--##begin).*?(--##end)","$1$2"));
回复 点赞
dengsilinming 2014年01月27日
是根据行进行删除么?
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告