想法由来:之前写读书报告时,遇到一些烦人的文献,总喜欢把注释作为括号内容放到正文中,使文章繁琐冗长,所以写了下面这个代码,剔除了括号内的内容。

适用条件:原txt文本中的括号使用正确,即左右括号匹配正确,且对应的一对左右括号之间不能换行。

主要思想:以段落作为处理对象,找到第一个左括号的位置后,定义一个计数器count赋初值为1,然后遍历该左括号之后的字符,若遇到左括号则count加1,若遇到右括号则count减1。当count的值为0时,说明左右括号匹配正确,已经找到了与第一个左括号对应的右括号,此时就将这两个括号之间的内容以及括号替换成“”(空内容),然后再找寻该段落中的下一个左括号,并将count的值置为1,循环执行上述过程,将所有括号内内容删去。

源代码:

import java.io.*;
import java.util.*;public class FileReader {public static String replace(String str) //识别括号并将括号内容替换的函数
    {int head = str.indexOf('('); //标记第一个使用左括号的位置if(head==-1); //如果str中不存在括号,什么也不做,直接跑到函数底端返回初值strelse{int next=head+1; //从head+1起检查每个字符int count=1; //记录括号情况do{if(str.charAt(next)=='(')count++;else if(str.charAt(next)==')')count--;next++; //更新即将读取的下一个字符的位置if(count==0) //已经找到匹配的括号
                                {String temp = str.substring(head,next); //将两括号之间的内容及括号提取到temp中str = str.replace(temp, ""); //用空内容替换,复制给strhead = str.indexOf('('); //找寻下一个左括号next=head+1; //标记下一个左括号后的字符位置count=1; //count的值还原成1
                }}while(head!=-1); //如果在该段落中找不到左括号了,就终止循环
        }return str; //返回更新后的str
    }public static void main(String[] args) throws FileNotFoundException, Exception {Scanner in = new Scanner(new File("C:\\Users\\kid\\Desktop\\input.txt")); //读取该地址下的input.txt文件PrintWriter out = new PrintWriter(new File("C:\\Users\\kid\\Desktop\\output.txt")); //将处理后的文件output.txt创建到该地址下while(in.hasNext()){String str = in.nextLine(); //按行读取,遇到换行符停止。将读取到的内容赋值到str中str = str.replace('(', '('); str = str.replace(')', ')'); //考虑到某些文献中输入法混用,统一将中文输入法下的括号--‘(’、‘)’替换成英文输入法下的括号--‘(’、‘)’,便于之后的处理out.write(replace(str)+"\r\n"); //写出文本并换行
        }out.close(); //关闭写入的文本
    }}

转载于:https://www.cnblogs.com/ticktack/p/6366619.html

java操作txt文本(二):删除文本括号内的内容相关推荐

  1. MySQL 去除字符串中的括号以及括号内的内容

    MySQL 去除字符串中的括号以及括号内的内容 update 表 set 列名 = REPLACE(列名,SUBSTRING(列名 , LOCATE( '(',列名) , LOCATE(')',列名) ...

  2. 正则表达式-获取小括号内的内容

    需求 在开发过程需要获取字符串中在小括号内的内容,遂记录一下 实现 import cn.hutool.core.util.ReUtil; ​ public class RegexTest { ​pub ...

  3. Java操作数据库方式二DBCP使用详解

    ##概述 DBCP的全称是:DataBase connection pool,翻译是:数据库连接池. 在Java操作数据库方式一JDBC使用详解中说到直接使用JDBC非常消耗资源.为了避免频繁关闭链接 ...

  4. java 正则 任意字符_Java正则表达式 去掉括号内任意字符

    前言: 刚开始以为 (.*) 就是括号内任意字符了,试了不行. 错误点 1.括号需要转义(是正则表达式关键字) 2.不是任意字符,而是 除了右括号的任意字符 String content = &quo ...

  5. excel提取括号内的内容

    使用MID函数作为主要函数,使用FIND函数作为定位函数 MID函数可以截取文本的内容,其函数构造如下: MID(取哪格,从哪开始,取多少个字符) 其显示结果为所截取的字符段. 例如要提取A1格中前十 ...

  6. python爬虫时删除多余标签内的内容remove、remove_tags

    当爬取到内容后,发现有些便签内的内容不是我们想要的,这时只能通过删除多余标签的方法来进行处理 doc = pq(html)doc('.article-t style').remove() 如上是:想要 ...

  7. java操作txt文本(一):遇到指定字符换行

    想法由来:有时查看网页源代码的css文件内容,竟是恼人的压缩后代码(不换行),如下图所示-- 它的可读性很差,所以写了下面这个简单的程序,实现自动换行. 适用条件:遇到指定字符换行(本例中遇到'}'换 ...

  8. java 操作txt文件

    有勇气的牛排 官方地址: https://www.920vip.net/ 按行读取 public static void readFile(){String pathname = "E:/p ...

  9. 使用Java操作Redis(二)

    上篇文章中我们可以看到,通过自己动手编码来操作Redis是相当繁琐的,实际上我们在重复制造轮子.Redis网站上列举出了一些方便操作Redis的常用工具. 可供Java选择的比较多,这里介绍一下Jed ...

最新文章

  1. Nature Genetics:每年造成7亿人感染的酿脓链球菌的致病机制
  2. XML学习笔记之XML的简介
  3. OpenMP 线程互斥锁
  4. windows2008下配置iis时出现错误“由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。”...
  5. python3中zip()函数的用法
  6. 7种 Java 设计模式,你会几种?
  7. (转)编译Android源码的全过程
  8. php 命名空间实现的原理,php命名空间实现的理解
  9. 程序员面试题之从字节截断谈起
  10. C++之指针探究(十七):结构体内嵌函数指针实现分层
  11. java类加载全过程
  12. nginx proxy_pass 使用变量报错_nginx自定义变量与内置预定义变量
  13. bgsave配置与工作流程
  14. 【Python实例第11讲】文本的核外分类
  15. SAP那些事-理论篇-13-SAP问题解决思路
  16. C#引用interop.taskscheduler.dll
  17. win7 IE11浏览器怎么降至IE8?
  18. ENVI系列--安装扩展工具的两种方法
  19. Hibernate主键生成策略总结
  20. 2022“杭电杯”中国大学生算法设计超级联赛(1)C.Backpack

热门文章

  1. 软件工程毕业设计题目安卓Android移动端推荐
  2. 威尔特拉斯定理_数学大师启示录维尔斯特拉斯.pdf
  3. 江苏省计算机二级c语言题型分值,计算机二级C语言题型和评分标准
  4. (转)80后生存法则
  5. 【C++复习总结回顾】—— 【一】基础知识+字符串/string类
  6. BackTrack平台中主流渗透测试工具
  7. 处理ios软键盘弹起和收起时页面滚动问题
  8. python作业:有一个学生成绩表,包括学号、姓名、高数、英语,计算机。 录入若干个学生学号、姓名、高数、英语,计算机5项数据。 将学生成绩表数据写入文件,文件名为“学生成绩表.txt
  9. 基于Android Q 修改默认音量等级
  10. 纷享销客2022新增长系列之《高科技行业橙皮书》重磅发布