问题描述
- java中关于字符串匹配的问题,哪里出了问题
-
/*
需求:当前有一张关键词表和一个新闻文本
要把在文本中所包含的词表中的关键词标识出来,(在这里我用的是前后加标识符)
然后输出到另一个文本
/
import java.io.;public class adverbSiged {
static File txtFile;// 将所有路径定义为全局变量
static File advFile;
static File targetFile;
static String beginSign = "#";
static String endSign = "**";adverbSiged(File txtFile, File adverbFile, File targetFile) throws Exception { this.txtFile = txtFile; this.advFile = adverbFile; this.targetFile = targetFile; get(); } public void get() throws Exception { FileInputStream fisTxt = new FileInputStream(txtFile); BufferedReader bufAdv = new BufferedReader(new FileReader(advFile)); BufferedWriter bwTar = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(targetFile), "utf-8")); // 将原文件读取至数组和txtStr中 int txtLenth = fisTxt.available(); byte[] txt = new byte[txtLenth]; fisTxt.read(txt); String txtStr = new String(txt); // 将原字符串每个字符和词汇表每个词比较 for (int i = 0; i < txtStr.length() - 1;) { String departStr = null; String line = null; boolean bool = false;//判断关键字表中是否有此关键字或词 while ((line = bufAdv.readLine()) != null) { departStr = txtStr.substring(i, i + line.length());//读取与关键字等长的子串 if (departStr.equals(line)) { bwTar.append(beginSign + line + endSign); bool = true; i = i + line.length();// 若找到此关键词,那么源字符串的角标向后移动此关键字的长度个位置 } } if (bool == false) {// 如果在整个词表都没有匹配到,那么将这一个字符输出,角标向后移一位。 bwTar.append(txtStr.subSequence(i, i + 1)); i = i + 1; } bwTar.flush(); } fisTxt.close(); bufAdv.close(); bwTar.close(); } public static void main(String[] args) throws Exception { txtFile = new File("C:UsersAdministratorDesktop原文本.txt"); advFile = new File("C:UsersAdministratorDesktop词表.txt"); targetFile = new File("C:UsersAdministratorDesktop目标.txt"); new adverbSiged(txtFile, advFile, targetFile); }
}
//程序运行后原文本直接复制到了目标文本,没有任何改变,而且文本中确实包含关键词,帮看看哪里出错了,感谢
解决方案
解决方案二:
把departStr打印显示,除了第一次是一个字符串以外,后面的都是null
解决方案三:
大婶呢?在线等,挺急的~
时间: 2025-01-20 12:15:40