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

适用条件:原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中不存在括号,什么也不做,直接跑到函数底端返回初值str
else{
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, ""); //用空内容替换,复制给str
head = 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(); //关闭写入的文本
} }
												

java操作txt文本(二):删除文本括号内的内容的更多相关文章

  1. 【MathType教学】如何让括号内的内容居中

    作为一款非常好用的公式编辑器,MathType它的功能十分强大,不仅包含了大量的数学符号,并且能和Office软件很好地兼容.但是有的时候打出来的公式可能不是自己想要的效果,这时我们就要用一些特别的办 ...

  2. python 操作txt 生成新的文本数据

    name: Jack ; salary: 12000 name :Mike ; salary: 12300 name: Luk ; salary: 10030 name :Tim ; salary: ...

  3. java操作elasticsearch实现查询删除和查询所有

    后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...

  4. Java操作redis【二十】

    1.首先需要将redis的绑定地址为127.0.0.1去掉,同时将redis的保护模式去掉,并且开放6379端口. 如果是保护模式需要输入密码才能连接. (1)去掉绑定地址: (2)去掉保护模式: ( ...

  5. java读取txt文件的2中方法---并将内容(每一行以固定的字符分割切成2段)存到map中去

    #java读取txt文件的第一种方法 /** * 方法:readTxt * 功能:读取txt文件并把txt文件的内容---每一行作为一个字符串加入到List中去 * 参数:txt文件的地址 * 返回: ...

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

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

  7. 使用Java操作Redis(二)

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

  8. Python文件操作大全,随机删除文件夹内的任意文件

     在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法: os.path.abspath(path) #返回绝对路径os.path.basename(path ...

  9. java操作elasticsearch实现批量添加数据(bulk)

    java操作elasticsearch实现批量添加主要使用了bulk 代码如下: //bulk批量操作(批量添加) @Test public void test7() throws IOExcepti ...

随机推荐

  1. react native ios打包到真机

    每当在模拟器上完成了开发,都想到真机上秀秀,正好前段时候买了一个mac,哈哈有机会了.前篇文章以android为例,这里就以ios为例,讲一下打包到iphone真机的流程. 一.前置 1.首先你得有一 ...

  2. C++ 头文件系列(iterator)

    简介 该头文件围绕迭代器展开,定义了一系列与迭代器有关的概念,但最最最重要的一点就是----它和其它容器一起实现了C++容器的Iterator设计模式. Iterators are a general ...

  3. c# 应用NPOI 获取Excel中的图片,保存至本地的算法

    要求:读取excel中的图片,保存到指定路径 思路:  利用NPOI中 GetAllPictures()方法获取图片信息 步骤: 1.新建一个Windows窗体应用程序 2.桌面新建一个excel,贴 ...

  4. form表单的两种提交方式,submit和button的用法

    1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的 ...

  5. 文件下载类型__response

    response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据. 例如web浏览器就是通过MI ...

  6. linux-Centos6.5中nginx1.63源码安装

    我自己在学习的过程中,搜索网上的教程,碰了很多壁,终于总结出自己一套易于配置和管理的安装方法 如果是用于生产环境,不用盲目追求最新版本,跟着我这个来就好了. 安装前预热: 1.创建nginx专属用户: ...

  7. Android仿微信朋友圈,全文收起功能,附源码

    在众多的社交类软件中,朋友圈是必不可少的,可以与好友.同学等分享自己的日常和有意思的事情,在开发社交类App时,朋友圈发表的内容你不可能让他全部显示,全部显示的话用户体验度会非常不好,这时就要用到全文 ...

  8. swift 2.0 与 OC 相比较,标签栏和导航栏书写的差别

    下面是swift书写的时候的两个方法,其实这里不是教大家怎么样写的这个问题,我是想通过这两个不同语言的进行的一个比较,向大家找他们之间“想法”上的一些相同点,这样子我们学习swift的时候,就可以更加 ...

  9. matlab 利用while循环计算平均值和方差

    一.该程序是用来测输入数据的平均值和方差的 公式: 二. 项目流程: 1. State the problem假定所有测量数为正数或者0,计算这一系列测量数的平均值和方差.假定我们预先不知道有多少测量 ...

  10. esri-leaflet部分瓦片缺失问题及解决办法

    esri-leaflet加载TileLayer的时候,有时候由于数据的原因,造成部分瓦片缺失的问题,网页加载TileLayer的时候,当地图范围正好拖动到缺失的范围的时候,会一直请求 http://d ...