java处置常规中文文本:给每行添加一些字符串
java处理常规中文文本:给每行添加一些字符串
在任何语言中处理文件都是很重要的工作。昨天项目中碰到了一个问题:产品发来个doc文档,有300行文字。里面乱七八糟的。什么xml标记,unicode字符都有。要求在项目中隔段时间随机显示一行。和同事讨论了下,单独做成个xml文件,给每行字符串按规律起一个名字,在android程序里就好处理了。处理基本过程如下:
1.先把文本从word考到Notepad里洗一下~.
2.在eclpse编辑器里使用正则表达式去掉无关的字符。什么tab、尖括号、下划线什么的都滚!
3.写个java程序一行行读文件,添加了<string name="xxx">content</string>之后,一行行写入另一个文件就ok了!
在任何语言中处理文件都是很重要的工作。昨天项目中碰到了一个问题:产品发来个doc文档,有300行文字。里面乱七八糟的。什么xml标记,unicode字符都有。要求在项目中隔段时间随机显示一行。和同事讨论了下,单独做成个xml文件,给每行字符串按规律起一个名字,在android程序里就好处理了。处理基本过程如下:
1.先把文本从word考到Notepad里洗一下~.
2.在eclpse编辑器里使用正则表达式去掉无关的字符。什么tab、尖括号、下划线什么的都滚!
3.写个java程序一行行读文件,添加了<string name="xxx">content</string>之后,一行行写入另一个文件就ok了!
中间碰到了一个很恼人的问题。使用FileOutputStream和BufferedWriter配合,写到文件的一半了,突然程序结束了,我去!
于是百度发先,BufferedWriter写文件有长度限制。ok,我直接调用FileOutputStream的write方法,解决了此bug!
给出源码:
import java.io.*; class addsomething { public static void main( String[] args ) { String fileName = ""; System.out.println( "int file name:" ) ; InputStreamReader ir = null; BufferedReader bf = null; String lines = ""; StringBuffer sb = new StringBuffer(); OutputStreamWriter osw = null; BufferedWriter bw = null; try { ir = new InputStreamReader( System.in ) ; bf = new BufferedReader(ir); String name = bf.readLine(); System.out.println( "filename:" + name ); ir = new InputStreamReader( new FileInputStream(name), "UTF-8" ); bf = new BufferedReader(ir); System.out.println("sdfsadfsadf") ; int count = 0; osw = new OutputStreamWriter( new FileOutputStream(name + ".txt"), "UTF-8"); bw = new BufferedWriter(osw); // 有限制,不使用这个对象 System.out.println( " -0------------------------->"); // 一行行读文件,再写入,使用osw的write方法。而不是bw while( null != (lines = bf.readLine()) ) { System.out.println( lines ); osw.write("<string name=\"proverb" + count + "\">" + lines + "</string>\n" ); count ++; System.out.println( " cout->" + count ); } // writeString(name + ".txt", sb); ir.close(); bf.close(); osw.close( ) ; } catch( Exception ex ) { ex.printStackTrace( ); } } }