`
Wesleydeng
  • 浏览: 34778 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

TextReplacer文本替换:目录的层次显示

阅读更多

有时候网上复制下来的书的目录是没有层次结构的,打印出来之后比较难看:

 

 写道
2.1 窗口简介 10
2.2 窗口的创建和撤销 10
2.2.1 创建普通窗口(CreateWindow、CreateWindowEx) 10
2.2.2 关闭窗口(CloseWindow) 19
2.2.3 销毁窗口(DestroyWindow) 20
2.3 窗口类操作 21
2.3.1 注册窗口类(RegisterClass、RegisterClassEx) 21
2.3.2 撤销窗口类(UnregisterClass) 23
2.3.3 获得窗口类信息(GetClassInfoEx) 24
 

所以想利用replace的方法处理一下,即符合某个正则表达式的字符串前加几个tab即可,但是发现文本编辑器的replace只能直接replace一个固定的字符串,所以只好自己写了一个这样的TextReplacer:

 

	public void replace() throws IOException
	{	
		File text=new File(textUrl);
		BufferedReader in=new BufferedReader(new FileReader(text));
		String eachLine;
		eachLine=in.readLine();
		while(eachLine!=null)
		{
			//为了方便使用,直接输出到console,这样直接拷贝结果覆盖原来的文本
			System.out.println(lineReplacer(eachLine));
			eachLine=in.readLine();
		}
	}

	private String lineReplacer(String eachLine)
	{
		// TODO Auto-generated method stub
		Matcher matcher=Pattern.compile(regex).matcher(eachLine);
		String result=new String();
		String matchedStr=null;
		int scanIndex=0;//eachLine 扫描位置
		while(matcher.find())
		{
			matchedStr=matcher.group();
			result+=eachLine.substring(scanIndex,eachLine.indexOf(matchedStr,scanIndex));
			scanIndex=eachLine.indexOf(matchedStr)+matchedStr.length();
			//$字符在正则表达式中有特殊意义,所以要使用转义字符“\\”
			result+=replacement.replaceAll("\\$", matchedStr);
		}
		result+=eachLine.substring(scanIndex);
		return result;
		
	}

使用时:

 

		Replacer replacer=new Replacer("C:\\Documents and Settings\\wesley\\桌面\\text.txt");
		try
		{
			//符号$代表text中符合regex模式的字符串$
			replacer.setReplacement("	$");
			replacer.setRegex("\\d+.\\d+.\\d+");
			replacer.replace();
		} catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

 即可完成替换。当然可以再封装出一个专门用来这种层次结构排班的类,但是这个基本已经够用了。

结果:

2.1 窗口简介 10
2.2 窗口的创建和撤销 10
	2.2.1 创建普通窗口(CreateWindow、CreateWindowEx) 10
	2.2.2 关闭窗口(CloseWindow) 19
	2.2.3 销毁窗口(DestroyWindow) 20
2.3 窗口类操作 21
	2.3.1 注册窗口类(RegisterClass、RegisterClassEx) 21
	2.3.2 撤销窗口类(UnregisterClass) 23
	2.3.3 获得窗口类信息(GetClassInfoEx) 24
 
0
1
分享到:
评论

相关推荐

    文本替换(c#源码)

    在IT领域,文本替换是一个常见的任务,特别是在处理大量文本数据时。C#作为一种功能强大的编程语言,提供了丰富的库和API来实现这样的功能。本项目"文本替换(C#源码)"显然是一款利用C#编写的文本处理工具,旨在...

    docx4j 替换文本

    《docx4j 替换文本》 在文档处理领域,docx4j是一个非常实用的Java库,它专门用于创建、修改和转换Open XML格式的文档,如.docx、.pptx等。这个库的强大之处在于,它可以让我们在程序中高效地操作Word文档,而无需...

    TextReplacer.rar

    本文将围绕“TextReplacer.rar”这个压缩包文件,详细探讨如何利用C#编程语言实现多条件文本替换以及如何运用正则表达式来增强替换规则的灵活性。 首先,我们要理解“TextReplacer”项目的核心功能:设定多个替换...

    指定路径和文件替换文字

    这个过程通常涉及到读取文件,搜索特定的文本模式,然后将找到的模式替换为新的文本。在C#中,这可以通过使用`System.IO`和`System.Text.RegularExpressions`命名空间中的类来实现。 首先,`System.IO`命名空间提供...

    TextReplacer-crx插件

    **Description:** "TextReplacer是一款英文的Chrome浏览器扩展,它允许用户使用正则表达式(regexp)在网页上替换文本内容。这款工具主要面向开发者,目的是为了优化网页打印时的字符显示效果。" **Keywords (标签)...

Global site tag (gtag.js) - Google Analytics