java操作txt文本(二):删除文本括号内的内容
想法由来:之前写读书报告时,遇到一些烦人的文献,总喜欢把注释作为括号内容放到正文中,使文章繁琐冗长,所以写了下面这个代码,剔除了括号内的内容。
适用条件:原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文本(二):删除文本括号内的内容相关推荐
- MySQL 去除字符串中的括号以及括号内的内容
MySQL 去除字符串中的括号以及括号内的内容 update 表 set 列名 = REPLACE(列名,SUBSTRING(列名 , LOCATE( '(',列名) , LOCATE(')',列名) ...
- 正则表达式-获取小括号内的内容
需求 在开发过程需要获取字符串中在小括号内的内容,遂记录一下 实现 import cn.hutool.core.util.ReUtil; public class RegexTest { pub ...
- Java操作数据库方式二DBCP使用详解
##概述 DBCP的全称是:DataBase connection pool,翻译是:数据库连接池. 在Java操作数据库方式一JDBC使用详解中说到直接使用JDBC非常消耗资源.为了避免频繁关闭链接 ...
- java 正则 任意字符_Java正则表达式 去掉括号内任意字符
前言: 刚开始以为 (.*) 就是括号内任意字符了,试了不行. 错误点 1.括号需要转义(是正则表达式关键字) 2.不是任意字符,而是 除了右括号的任意字符 String content = &quo ...
- excel提取括号内的内容
使用MID函数作为主要函数,使用FIND函数作为定位函数 MID函数可以截取文本的内容,其函数构造如下: MID(取哪格,从哪开始,取多少个字符) 其显示结果为所截取的字符段. 例如要提取A1格中前十 ...
- python爬虫时删除多余标签内的内容remove、remove_tags
当爬取到内容后,发现有些便签内的内容不是我们想要的,这时只能通过删除多余标签的方法来进行处理 doc = pq(html)doc('.article-t style').remove() 如上是:想要 ...
- java操作txt文本(一):遇到指定字符换行
想法由来:有时查看网页源代码的css文件内容,竟是恼人的压缩后代码(不换行),如下图所示-- 它的可读性很差,所以写了下面这个简单的程序,实现自动换行. 适用条件:遇到指定字符换行(本例中遇到'}'换 ...
- java 操作txt文件
有勇气的牛排 官方地址: https://www.920vip.net/ 按行读取 public static void readFile(){String pathname = "E:/p ...
- 使用Java操作Redis(二)
上篇文章中我们可以看到,通过自己动手编码来操作Redis是相当繁琐的,实际上我们在重复制造轮子.Redis网站上列举出了一些方便操作Redis的常用工具. 可供Java选择的比较多,这里介绍一下Jed ...
最新文章
- Nature Genetics:每年造成7亿人感染的酿脓链球菌的致病机制
- XML学习笔记之XML的简介
- OpenMP 线程互斥锁
- windows2008下配置iis时出现错误“由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。”...
- python3中zip()函数的用法
- 7种 Java 设计模式,你会几种?
- (转)编译Android源码的全过程
- php 命名空间实现的原理,php命名空间实现的理解
- 程序员面试题之从字节截断谈起
- C++之指针探究(十七):结构体内嵌函数指针实现分层
- java类加载全过程
- nginx proxy_pass 使用变量报错_nginx自定义变量与内置预定义变量
- bgsave配置与工作流程
- 【Python实例第11讲】文本的核外分类
- SAP那些事-理论篇-13-SAP问题解决思路
- C#引用interop.taskscheduler.dll
- win7 IE11浏览器怎么降至IE8?
- ENVI系列--安装扩展工具的两种方法
- Hibernate主键生成策略总结
- 2022“杭电杯”中国大学生算法设计超级联赛(1)C.Backpack
热门文章
- 软件工程毕业设计题目安卓Android移动端推荐
- 威尔特拉斯定理_数学大师启示录维尔斯特拉斯.pdf
- 江苏省计算机二级c语言题型分值,计算机二级C语言题型和评分标准
- (转)80后生存法则
- 【C++复习总结回顾】—— 【一】基础知识+字符串/string类
- BackTrack平台中主流渗透测试工具
- 处理ios软键盘弹起和收起时页面滚动问题
- python作业:有一个学生成绩表,包括学号、姓名、高数、英语,计算机。 录入若干个学生学号、姓名、高数、英语,计算机5项数据。 将学生成绩表数据写入文件,文件名为“学生成绩表.txt
- 基于Android Q 修改默认音量等级
- 纷享销客2022新增长系列之《高科技行业橙皮书》重磅发布