我把一篇文章赋给一个字符串 String str;我需要进行替换,要求按照指定的规则进行替换,比如所有的词语能用近义词表示的就替换成近义词,如:“快速修改计算机的注册表”,替换成“迅速修改电脑的注册表”,把“快速”替换成了“迅速”,“计算机”替换成了“电脑”,等等,最好之前能先定义一个需要替换的近义词表,然后遍历整个字符串把所有能替换的都替换掉。由于我网站大量采集的信息,百度修改算法之后大量封杀采集站,拒绝收录,我本来想用人工的方法一一修改替换,但是动辄10几万个页面人工替换会累死的,才出此下策,不知道java能不能实现?

解决方案 »

  1.   

    大家没看明白楼主的意思吧,光用正则是不行的。首先要保证替换好的句子和原句的意思是一样的,这样就要建立一个数据库,然后根据语境来分析(怎么分析我也不太清楚,ieee上查查,好像是用图来实现的,相当复杂)。分析完成后才能替换
      

  2.   

    刚做了个小程序, 看一下, 虽然小,但应该能实现你要的功能:public class replace
    {
    public static void main(String[] args)
    {
    String str = "abcfjdkabcfjdkabcfjdk";//内容

    String str1 = "abc";//待替换内容
    String str2 = "****";//替换内容

    System.out.println(str);//输出原来内容 StringBuilder sb = new StringBuilder(str);

    for (int i = 0; i < sb.length()-3; i++)//替换过程
    {
    if (sb.substring(i, i+3).equals(str1))
    {
    sb.delete(i, i+3);
    sb.insert(i, str2);
    i += str2.length() - str1.length();
    }
    }

    System.out.println(sb.toString());//输出替换后内容
    }
    }
      

  3.   

    str.replace("快速","迅速");只可惜,每个关键字需要一个一个的循环替换了。
      

  4.   

    得先定义这个近义词表或者,写N个string.replace语句 ...