string-java中关于字符串匹配的问题,哪里出了问题

问题描述

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

string-java中关于字符串匹配的问题,哪里出了问题的相关文章

【Java编程】Java中的字符串匹配

在Java中,字符串的匹配可以使用下面两种方法:         1.使用正则表达式判断字符串匹配         2.使用Pattern类和Matcher类判断字符串匹配 正则表达式的字符串匹配:         正则表达式:定义一组字符串的一系列字符和符号,它由常量字符和特殊符号构成.         下面是正则表达式的一些预定义字符类,实际上是一些转义字符序列:                 1.\d   代表任何数字                 2.\D  代表任何非数字字符  

JAVA中在文本框中输入字符后如何在弹出下拉菜单中出现对应的选项,急求各位大师。

问题描述 JAVA中在文本框中输入字符后如何在弹出下拉菜单中出现对应的选项,急求各位大师. 如何1是电汇,2是信用证.当我在文本框中输入1后,自动弹出下拉菜单:1 电汇. 请说的详细些,这问题真的困扰我很久了.谢谢各位啦. 解决方案 能不能把问题描述的更详细点 输入1 对应的选项 电汇..是从数据库中查询的 还是只是前台的一个效果 解决方案二: 是不是类似于搜索引擎那种,比如百度一样,输入一个三国下面会显示出三国******什么的. 解决方案三: 你说的是自动补全吧,如果是输入框,必须监听输入状

mysql中的字符串匹配的原理是什么

问题描述 mysql中的字符串匹配的原理是什么 mysql中的字符串匹配的原理是什么?有这方面的书或者资料么? 解决方案 你指的是like么?问问题能不能别那么含糊 解决方案二: http://www.chinaz.com/program/2010/0304/107774.shtml 解决方案三: 不太懂你想问的是什么,请说清楚一点 解决方案四: mysql是开源的. 解决方案五: http://www.2cto.com/database/201309/241752.html 解决方案六: 查找

java中的字符数组反序-java中怎么将一个字符数组反序

问题描述 java中怎么将一个字符数组反序 新手java中怎么将一个字符数组反序,不要new数组,只能使用一个字符数组,三克油 解决方案 可以用Collection.reverse(list)呀,先把你的数组放到List里,再Collection.reverse(list),然后再从list中拿回来,示例代码: public static void main(String[] args) { String[] deal = new String[3]; deal[0] = "0"; d

Java中的字符编码问题处理心得总结_java

当面对一串字节流的时候,如果不指定它的编码,其实际意义是无法知道的. 这句话应该也是我们面对"字符转字节,字节转字符"问题时候时刻记在脑子里的.否则乱码问题可能就接踵而至. 其实乱码问题的本质就是Encoding和Decoding用的不是一个编码,明白了这个道理就很好解决乱码问题了. Java中常见的时候有如下: 1. String类使用byte[]的构造函数 String(byte[] bytes),String类同时提供了两个重载 (1)String(byte[] bytes, C

Java正则多字符串匹配替换_java

Java中使用也比较简单:1. 编译正则表达式的字面值得到对应的模式Pattern对象: 2. 创建匹配给定输入与此模式的匹配器Matcher: 3. 通过匹配器对象执行操作,匹配器对象的方法很丰富,方法之间组合使用更加强大. 复制代码 代码如下: public static void main(String[] args) {     //被替换关键字的的数据源     Map<String,String> tokens = new HashMap<String,String>(

java中处理字符编码(网页与数据库)(转)

首先声明一下,此文章时从网上转载的.如下的某些方法是确实管用,但是从中发现了有一点不足,就是原文笔者没考虑使用不同Web Server时出现的情况,比如文章里我用红色字体画出来的部分代码在Tomcat跑的时候得用他说的方法,不过到了WebSphere的时候必须得用原先的 String name = request.getParameter("name"); 所以采取本文方法的时候不要太死板,多试试.  在Java编程中,中文字体编码难倒了不少程序员,如果抓住了影响Java中文显示的几个

java中常用字符处理函数

substring() 它有两种形式,第一种是:String substring(int startIndex) 第二种是:String substring(int startIndex,int endIndex) concat() 连接两个字符串 replace() 替换 它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下: String replace(char original,char replacement) 例如:String s="Hello&

C语言string.h中常用字符函数介绍

strcpy 函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *strcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strcpy(string, str1); printf("%s\n",