我需要创建一个采用 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
-> 无效。
答案 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
}
}