如何检查字符串中的正整数并删除其间的空格

时间:2013-05-15 10:25:41

标签: java validation

我使用下面的方法来验证字符串是否包含所有整数,并使用“parsePhone”方法返回它。但是这样的程序无法检查字符串格式之间是否有空格,例如“09213 2321”。并输出一个删除空格的字符串。此外,有没有更好的方法将这两种方法合二为一!

public static String parsePhone(String phone)
{
    if(phone==null) return null;
    String s = phone.trim();

    if(s.matches("^[0-9]+$"))
    {
        while(s.startsWith("0")&& s.length()>1)
        {
            s = s.substring(1);
        }
        if(s.length()>=3) return s;
    }
    return null;
}

public static boolean phoneValidation(String phone)
{
    if(phone == null) return false;
    String string = phone.trim();

    if(string.matches("^[0-9]+$"))
    {
        while(string.startsWith("0")&& string.length()>1)
        {
            string = string.substring(1);
        }
        if(string.length()>=3) return true;
    }
    return false;

}

4 个答案:

答案 0 :(得分:0)

试试这个:

public static String parsePhone(String phone)
{
    if(phone==null) return null;
    String s = phone.trim().replaceAll("\\s","");

    //The replaceAll will remove whitespaces

    if(s.matches("^[0-9]+$"))
    {

        while(s.startsWith("0")&& s.length()>1)
        {
            s = s.substring(1);
        }

        if(s.length()>=3) return s;
    }

return null;

}

public static boolean phoneValidation(String phone)
{
    return parsePhone(phone) != null;
}

答案 1 :(得分:0)

您需要使用Java中的PatternMatcher

public static boolean phoneValidation(String phone) {
    if (phone == null) return false;
    String string = phone.trim();
    Pattern p = Pattern.compile('\\d');
    Matcher m = p.matcher(string);
    String result = "";

    while (m.find()) {
      result += m.group(0);
    }

    if (result.length() >= 3)
      return true;

    return false;
}

这应该查看字符串,查找每个数字字符并逐个返回,以添加到结果中。然后,您可以检查您的电话号码长度。

如果你想让函数返回一个String,那么用最后的if替换为:

if (result.length() >= 3)
  return result;

return "";

事实上,更快的方法是:

public static String phoneValidation(String phone) {
    if (phone == null) return false;
    String result = phone.replaceAll("[^\\d]", "");

    if (result.length() >= 3)
      return result;

    return "";

}

哪会删除不是数字的每个字符。

答案 2 :(得分:0)

如果您要验证字符串是否为电话号码,即使它包含空格,您也可以按照以下regular expression pattern进行查找。

模式是:[0-9]* [0-9]*

如果您有任何特定标准,例如空白区域应该用于分隔std codenumber,那么您可以通过这种方式提供模式。

注意:图案中有一个空格。

答案 3 :(得分:0)

试试这个

    String s = "09213 2321";
    boolean matches = s.matches("\\d+\\s?\\d+");
    if (matches) {
        s = s.replaceAll("\\s", "");
    }