Java:识别字符串中的Ints和Non Ints

时间:2012-07-06 20:50:27

标签: java tokenize

您好我正在尝试修复代码中的错误。在读取传入的短语时,此代码似乎不计算整数。它计算非整数字的数量没有问题。 例如,如果我有以下句子: “我爱我的4只猫” 它应该表明我有4个非整数字1个整数。但这不是整数的情况,它似乎将其识别为一个单词 有任何想法吗?

String[] stra = phrase.split(" ");    
         int numInts = 0;    
         int numNonInts = 0;    
         for (String s : stra) {    
             try {    
                 Integer.parseInt(s);    
             }    
             catch(NumberFormatException nfe) {    
                 numNonInts++;    
                 continue;    
             }    
             numInts++;    
         }    

3 个答案:

答案 0 :(得分:2)

     String[] stra = phrase.split("\\W+");    // + for sequences
     int numInts = 0;    
     int numNonInts = 0;    
     for (String s : stra) {    
         try {    
             Integer.parseInt(s);    
             numInts++;    
         }    
         catch (NumberFormatException nfe) {    
             numNonInts++;    
         }    
     }    

两个空格会算作一个单词。 此外\\W包括所有非单词字符。

答案 1 :(得分:0)

尝试使用:

Integer.valueOf(s);

而不是

Integer.parseInt(s);

答案 2 :(得分:0)

要避免意外的分隔符(例如制表符,双倍空格或换行符),请将以下分隔符替换为:

phrase.split("\\s+"); 

也许你的数字超过Integer的限制。

用以下方式替换你的循环:

for (String s : stra) {
    if(s.matches("\\d+"))
        numInts++;    
    else            
        numNonInts++;    
}