我想知道我可以用什么来检查字符串中的最后一个字符是否是数字。例如对于 ID:“S000123”。
我使用以下内容检查它是否以 E、S 或 X 开头。
if(! id.startsWith("E") || ! id.startsWith("S") || ! id.startsWith("X")) {
alertinputError("Incorrect format in the ID field", lineNum);
return;
}
谢谢。
我想知道我可以用什么来检查字符串中的最后一个字符是否是数字。例如对于 ID:“S000123”。
我使用以下内容检查它是否以 E、S 或 X 开头。
if(! id.startsWith("E") || ! id.startsWith("S") || ! id.startsWith("X")) {
alertinputError("Incorrect format in the ID field", lineNum);
return;
}
谢谢。
我知道这是一篇非常古老的文章,但对于未来的读者,我想我会添加一种不同的方法。
我个人发现正则表达式非常难读(你知道有人可以在不使用谷歌的情况下编写正则表达式吗?)
所以我更喜欢这种方法:
char lastChar = string.charAt(string.length() - 1)
return Character.isDigit();
如果你想为最后 N 个字母而不是 1 做它:
string.substring(string.length() - n).chars()
.allMatch(Character::isDigit);
正则表达式可能在这里工作得很好。
String foo = "bar123";
Pattern p = Pattern.compile(".*[0-9]+$");
Matcher m = p.matcher(foo);
if(m.matches)
System.out.println("yeah!");
因此,如果字符串由任何一串字符组成,后跟一个或多个数字,这将打印“是的!”。
试试这个:
id.matches("^.+?\\d$")
尝试一下:
String id = "S000123";
Pattern pattern = Pattern.compile("[ESX][0-9].*");
Matcher matcher = pattern.matcher(id);
System.out.println(matcher.matches());
好的,那么您可以使用以下代码:
boolean flag = true;
for (int i = id.length() - 1 ; i >= id.length() - 6 ; i--)
{
if (!Character.isDigit(id.charAt(i)))
{
flag = false;
break;
}
}
if (flag)
System.out.println("ID is valid");
else
System.out.println("ID is invalid");