[一天一项目]统计字符串中的单词数目

统计字符串中的单词数目——统计字符串中单词的数目,更复杂的话从一个文本中读出字符串并生成单词数目统计结果。

查询指定字符串出现次数可以直接使用:StringUtils.countMatches(str, sub);
然而如果不知道字符串中含有什么英文,并且要统计所有的英文出现的次数。下面列出一种解决方法(英文文章的统计),如果你有想到对字符串进行英文检索的方法,希望能告知,万谢。

public class CountEnglishNum {

    public static void main(String[] args) {
    String str ="String 谢谢  Thank you,thanks!really?";      
    findEnglishNum(str);    
    }

     private static void findEnglishNum(String content){  
         //找出所有的单词  
         String[] array = {".", " ", "?", "!"};  
         for (int i = 0; i < array.length; i++) {  
             content = content.replace(array[i],",");  
         }  
         String[] textArray = content.split(",");  

         //遍历 记录  
         Map<String, Integer> map = new HashMap<String, Integer>();  
         for (int i = 0; i < textArray.length; i++) {  
             String key = textArray[i];  
             //转为小写  
             String key_l = key.toLowerCase();  
             //不知道是个人技术问题还是真的不行   key_l.startsWith("^[a-z]*")是不能使用的
             //百度结果是startWith无法匹配正则表达式
             //如果有此处说法有误请指正,谢谢
            // if( key_l.startsWith("^[a-z]*")){
             if(key_l.substring(0).matches("^[a-z]*")){
             if(!"".equals(key_l)){  
                 Integer num = map.get(key_l);  
                 if(num == null || num == 0){  
                     map.put(key_l, 1);  
                 }else if(num > 0){  
                     map.put(key_l, num+1);  
                 }  
             }  
             }else{
                 continue;
             }

         }  
         //输出到控制台  
         System.out.println("各个单词出现的频率为:");  
         Iterator<String> iter = map.keySet().iterator();  
         while(iter.hasNext()){  
             String key = iter.next();  
             Integer num = map.get(key);  
             System.out.println(key + "\n\t\t" + num + "次\n-------------------");  
         }  
     }

}

代码合集:https://github.com/FanceTsui/Project.git
——Fance Tsui

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值