A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cjmjava 中级黑马   /  2015-5-12 11:59  /  1600 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

把读取出来的文本数据中”TMD”、”SB”的敏感字符以”**”或”***”代替

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

7 个回复

正序浏览
right 中级黑马 2015-5-12 19:08:52
8#

不客气
回复 使用道具 举报
package day_21homework;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
* 4、把读取出来的文本数据中”TMD”、”SB”的敏感字符以”**”或”***”代替
*/
public class Test3 {
        public static void main(String[] args) {
                String str1 = "TMD";
                String str2 = "SB";
                try {
                        //调用替换方法
                        replaceStr(str1 , str2);
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }

        private static void replaceStr(String str1, String str2) throws IOException {
                //创建字符输入流缓冲区对象
                File file = new File("D:\\TestTemp.txt");
                BufferedReader br = new BufferedReader(new FileReader("D:\\Test1.txt"));
                //创建临时字符输出流对象
                FileWriter fwTemp = new FileWriter(file);               
                String str = "";
                //考虑到大小写,所以用正则
                String tmdRegex = "[tT][mM][dD]";
                String sbRegex = "[sS][bB]";
                while((str = br.readLine()) != null){
                        //替换所有匹配正则的子字符串
                        str = str.replaceAll(tmdRegex, "***");
                        str = str.replaceAll(sbRegex, "**");
                        fwTemp.flush();
                        //将字符串写入临时文本文件中
                        fwTemp.write(str+System.getProperty("line.separator"));               
                }
                br.close();
                fwTemp.close();
                //创建临时文件字符输入流对象
                BufferedReader brTemp = new BufferedReader(new FileReader(file));
                //创建字符输出流对象,指定为原文件
                FileWriter fw = new FileWriter("D:\\Test1.txt");
                while((str = brTemp.readLine()) != null){
                        fw.write(str+System.getProperty("line.separator"));
                        fw.flush();
                }
                brTemp.close();
                fw.close();
                //最后删除临时文件
                file.delete();
        }
}
回复 使用道具 举报
right 发表于 2015-5-12 12:25
撸主可以用正则表达式来实现
String regEx="sb|2b|妈的";
Pattern p = Pattern.compile(regEx);

已解决,谢谢
回复 使用道具 举报
正则表达式 就可以了  String.replace("TMD").replace("SB");
回复 使用道具 举报
用ReadLine和正则就可以了
回复 使用道具 举报
String.replace("TMD").replace("SB");
回复 使用道具 举报
撸主可以用正则表达式来实现:)
String regEx="sb|2b|妈的";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马