如何递归字符串以验证其仅包含第一个字符之后的数字

时间:2019-03-28 18:16:26

标签: java string recursion int

我需要创建一个采用 String 参数的 递归方法
我需要验证字符串中的第一个字母是小写字符,然后验证第一个字母之后的所有内容都是数字。

所以应该像这样a1234

我尝试创建一个基本案例,一个较小的基本案例和一个普通案例,但是似乎找不到正确的样式设置方式:

public void digitCheck(String s) {

   if () //To Check that first character is a letter

   else if ()To check that everything after the first letter is a number

   else //Invalid
}

如果第一个字符是 小写字母 ,并且后面的所有内容都是 数字,我需要代码来报告它是否为有效字符串

示例:
a123-> 有效
ab123-> 无效

3 个答案:

答案 0 :(得分:1)

使用String.matches()方法:

boolean valid = s.matches(".\\d+");

答案 1 :(得分:0)

要使用模式为递归解决此问题,可以执行以下操作:

  • 从头开始,然后
  • 检查最后一个元素
  • 删除最后一个元素
  • 呼叫所有剩余部分

应该检查直到将一个元素传递给方法->如果它是一个较低的字母,请进行最终验证。

此外,StringUtils库中使用commons lang类。

这是代码段:

public class StringValidationDemo {
    public boolean validateStringRecursive(String str) {
        if (str.length() == 1) {
            return StringUtils.isAlpha(str) && StringUtils.isAllLowerCase(str);
        }

        String lastIndex = str.substring(str.length() - 1);
        return StringUtils.isNumeric(lastIndex)
                && validateStringRecursive(str.substring(0, str.length() - 1));
    }

    public static void main(String[] args) {
        List<String> words = Arrays.asList("a123", "ab123", "123ab", "A123", "aaa", "123");

        StringValidationDemo demo = new StringValidationDemo();
        for (String word : words) {
            System.out.printf("validation for: %s = %s\n",
                    word, demo.validateStringRecursive(word));
        }
    }
}

输出:

validation for: a123 = true
validation for: ab123 = false
validation for: 123ab = false
validation for: A123 = false
validation for: aaa = false
validation for: 123 = false

答案 2 :(得分:-1)

我认为您可以省略字符串中的第一个字符,然后只需检查Integer.parseInt(String)。所以看起来像:

public static boolean isNumeric(String strNum) {
    try {
        double d = Integer.parseInt(String);
    } catch (NumberFormatException | NullPointerException nfe) {
        return false;
    }
    return true;
}

public void DoStuff(String string){
    if (isNumeratic(string.substring(1)) //ommits first
    {
      ///yourstuff
    }
}