`
北风norther
  • 浏览: 13385 次
  • 性别: Icon_minigender_1
  • 来自: 邯郸
社区版块
存档分类
最新评论

用java替换txt里的文字

阅读更多

最近看烟雨江南的《罪恶之城》感觉不错,就下载个txt在本地看,没想到里面的章节名格式很特殊啊,例如应该是“第八章”吧,这个文件里就是“章八”,应该是“第二十八章”,就是“章二十八”,这样一来我用的九一阅读器就无法自动生成章节目录了。。。所以就自己写了java小程序来替换下~~

先看代码

package song;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class IoReader {

	private File file;
	private File tempFile;
	
	//private char[] number={'零','一','二','三','四','五','六','七','八','九','十'};
	private String num= "零一二三四五六七八九十";
	public IoReader(String in,String out) throws IOException{
		file = new File(in);
		tempFile= new File(out);
		
		FileInputStream fis= new FileInputStream(file);
		FileOutputStream fos = new FileOutputStream(tempFile);
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
		BufferedReader buffer= new BufferedReader(new InputStreamReader(fis));
		String s = "";
		System.out.println("转换ing...");
		while((s=buffer.readLine())!=null){
			bw.write(Relp2(s));
			bw.newLine();
		}
		System.out.println("OK");
		bw.close();
		fos.close();
		buffer.close();
		fis.close();
		
	}
	/*private String Relp(String str){
		if(str.startsWith("章"))	{
			String[] s = str.split(" ");
			if(s[0].length()>0&&s[0].charAt(0)=='章')
			{
				StringBuffer sb = new StringBuffer();
				sb.append("第");
				sb.append(s[0].substring(1, s[0].length()));
				sb.append("章");
				sb.append(" "+s[1]);
				return sb.toString();
			}
		}
		return str;
	}*/
	
	private String Relp2(String str){
		if(str.trim().startsWith("章"))	{
			StringBuffer sb = new StringBuffer(str.trim());
			sb.replace(0, 1, "第");
			int i = 1;
			int index;
			while(i<sb.length()){
				index = sb.charAt(i);
				if(num.indexOf(index)!=-1)
					i++;
				else	break;
			}
			sb.insert(i, "章");
			return sb.toString();
		}
		return str;
	}
}

 很简单io流操作啊,就是替换的时候出了些错误,注释的那部分是最早想的方法,因为一般的章节名就像这样“章二十四 若在冬季”。用空格分割下,然后再结合一起就行了,但。。。总有例外,例如,有的就是第几章,而作者并没有给章节起名字如“章三十四”。所以报错!!!

中间犯了个有点二的错误,写private String num= "零一二三四五六七八九十";时,我居然忘了在里面加上“十”,可以想象转换后的章节是什么样的。。。

 

在我电脑上,我转换《罪恶之城》共用时228毫秒~~

 

package song;

import java.io.IOException;

public class Main {

	/**
	 * NortherSong
	 * @param args
	 */
	public static void main(String[] args) {
		String url = "E:\\19348.txt";
		String out ="e:/b.txt";
		try {
			Long star = System.currentTimeMillis();
			IoReader ir = new IoReader(url,out);
			Long end = System.currentTimeMillis();
			System.out.println("用时:  《"+(end-star)+"》   毫秒");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 

最后罪恶之城分享给大家

1
0
分享到:
评论
2 楼 北风norther 2014-09-25  
jingjing0907 写道
厉害!  

。。。
1 楼 jingjing0907 2014-09-24  
厉害!  

相关推荐

    超级批量文本替换工具

    本软件特别适合需要批量替换大量文本里特定文字的网友,还可以实现特征字符串之间的模糊替换,是对付大量网页恶意代码的利器 可以处理 *.txt;*.htm;*.c;*.cpp;*.h;*.hpp;*.pas;*.dpr;*.bpr;*.asp; *.php;*.cgi;*.ini...

    java2Word操作Word,比如插入图片和替换文本

    java2Word操作Word,比如插入图片和替换文本,压缩文件中有【lib和exe】文件夹和[java2Word]项目代码,网上都不完整,本人对其进行完全整合,新手解压后按readme.txt文件操作说明可以使用

    jJAVA正则表达式替换字符

    本资源文件是我自己总结的,其中包括5个类,这5个类的代码基本概括了java正则表达式替换String的多种情况,比如获取某个文件路径中盘符/后边的部分内容,提取"&lt;title&gt;XXXX&lt;/title&gt;"中的文字XXXX,用正则表达式获取指定...

    Java开发技术大全(500个源代码).

    useArray1.java 用反射机制使用数组示例1 useArray2.java 用反射机制使用数组示例2 第10章 示例描述:本章学习泛型。 demoBounds.java 演示有界类型 demoForceChange.java 演示强制类型转换 demoGeneric.java ...

    超级文件替换器(ReplaceTools)

    本替换的利器,批量文本替换的不二之选,站长必备,挂马网页杀手,支持所有纯ANSI文件,支持GBK/Unicode/UTF8编码的htm、html、asp、java、php等文件,可自定义所支持的文件类型,支持16进制替换,支持单行和多行...

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    自主创作的一款多目录批量文件内容替换工具

    可以批量替换指定的字符串、文字、数字、英文等文本信息的工具,支持多目录同时替换,同时支持大部分文本类型文件,如txt、text、doc、docx、xls、xlsx、doc含图文、doc含表格、docx含图文及表格、md、html、css、js...

    超级批量文本替换 4.0

    支持单个和多个文件以及文件夹操作本软件特别适合需要批量替换大量文本里特定文字的网友还可以实现特征字符串之间的模糊替换,是对付大量网页恶意代码的利器可以处理*.txt;*.htm;*.c;*.cpp;*.h;*.hpp;*.pas;*.dpr;*....

    各种正则校验.txt,校验

    我上传的资源中包括了java开发中常用的一些正则校验方法,包括特殊字符的校验,文字的替换匹配,截取,解析输入流等一些信息,希望能对大家有所帮助!!

    java正则表达式,十分有用的正则表达式

    大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。...

    java文本编辑器源码

    制作一个简单的文本编辑器,交互性要求:【最大选题人数:8】 (1) 可输入文字(仅要求英文及标点符号) (2) 实现一些常用的编辑功能:如复制和粘贴,...(3) 可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件

    java文本编辑器(含各种基本操作)

    制作一个简单的文本编辑器,交互性要求:【最大选题人数:8】 (1) 可输入文字(仅要求英文及标点符号) (2) 实现一些常用的编辑功能:如复制和粘贴,... (3) 可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件

    editplus 代码编辑器html c++ jsp css

    具体解决方法,在 Editplus 中使用正则表达式,由于“(”、“)”被用做预设表达式(或者可以称作子表达式)的标志,所以查找 “ \n” 时会提示查找不到,所以也就无法进行替换了,这时可以把“(”、“)”使用任意...

    EditPlus v3.50 汉化版(绝对真实)

    EditPlus是一款功能强大的文字处理软件。EditPlus汉化版可以充分的替换记事本,EditPlus也提供网页作家及程序设计师许多强悍的功能。支持 HTML、CSS、PHP、ASP、Perl、C/C++、Java、JavaScript、VBScript 等多种语法...

    自动生成表白网页源码

    给页面文字添加span标签,设置id="text-xx"唯一属性,使用contenteditable="true",开启该元素的编辑模式,用jQuery属性.click()判断点击,用.text()返回此元素的文本内容,并用正则进行判断内容是否合法,然后通过...

    优秀代码编辑器 EmEditor Professional 20.7.1 + x64 中文免费版.zip

    Windows 系统自带的“记事本”的查找替换功能很弱,但 EmEditor 弥补了这一点,它支持的查找替换规则更加详细实用,对查找出的结果可以突出显示,并可以批量查找替换未打开的 TXT、HTML、DOC 等格式的文件中的内容:...

Global site tag (gtag.js) - Google Analytics