AngellaCan 2016-04-24 07:58 采纳率: 100%
浏览 1400

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:\\Users\\Administrator\\Desktop\\原文本.txt");
    advFile = new File("C:\\Users\\Administrator\\Desktop\\词表.txt");
    targetFile = new File("C:\\Users\\Administrator\\Desktop\\目标.txt");
    new adverbSiged(txtFile, advFile, targetFile);

}

}
//程序运行后原文本直接复制到了目标文本,没有任何改变,而且文本中确实包含关键词,帮看看哪里出错了,感谢

  • 写回答

3条回答 默认 最新

  • AngellaCan 2016-04-24 08:04
    关注

    把departStr打印显示,除了第一次是一个字符串以外,后面的都是null

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序