繁体   English   中英

如何分割字符串并寻找数字?

[英]How do I split a string and look for digits?

String[] tokens = s.split(' ');
    for(int i = 0; i < (tokens.length) - 1; ++i)
    {  
            if(isDigit(tokens[i]))
        {
            // Two numbers cannot be together without an operator.
            if(isDigit(tokens[i + 1]))
            {
                check = 1;
                break;
            }
            if((tokens[i + 1] == '(') )
            {
                check = 1;
                break;
            }
        }
           }

s是我要分割的字符串。 拆分后,我想检查每个拆分部分是否为数字。 我无法使用isDigit,因为它只能用于字符,并且此处的拆分部分是String。

注意:我正在为计算器编写程序。 如果我使用toCharArray(),则将拆分多个位数。 例如。 23将分别变为2和3。

int isDigit = false;
try
{
    Integer.parseInt(tokens[i])
    isDigit = true;
}
catch(NumberFormatException e)
{

}

如果您的电话号码应为Integer(与其他类型相同Integer.parseInt(...)则可以使用Integer.parseInt(...) )。 我认为无效数字会引发NumberFormatException。

try{    

if(isDigit(Integer.parseInt(tokens[i]))
{
   //Will come here if it is an integer
} 
 } catch(NumberFormatException nfe) {

  //Will come here if it is not an integer

}

您是否想知道每个令牌是否都是数字?

try{
   Integer.parseInt(token)
   return true;
} catch (numberFormatException){
   return false;
}

或使用apache commons lang http://commons.apache.org/lang/api-release/index.html

StringUtils.isNumeric()

您可能要使用string.toCharArray()方法而不是string.split() ,它会生成一个字符数组,然后可以使用Character.isDigit(char)方法进行检查。 希望这可以帮助。

一种方法:使用Integer.parse(token)并捕获NumberFormatException而不是数字:

或使用token.toCharArray()并分别测试字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM