我想知道我可以用来检查字符串中的最后一个字符是否为数字。例如,ID:“S000123”。
我使用以下内容检查它是否以E,S或X开头。
if(! id.startsWith("E") || ! id.startsWith("S") || ! id.startsWith("X")) {
alertinputError("Incorrect format in the ID field", lineNum);
return;
}
感谢。
答案 0 :(得分:6)
答案 1 :(得分:1)
正则表达式可能在这里运作良好。
String foo = "bar123";
Pattern p = Pattern.compile(".*[0-9]+$");
Matcher m = p.matcher(foo);
if(m.matches)
System.out.println("yeah!");
因此,如果字符串由任意一串字符后跟一个或多个数字组成,则会打印“是的!”。
答案 2 :(得分:1)
我知道这是一篇很老的文章,但对于以后的读者,我想我会添加另一种方法。
我个人发现正则表达式非常不可读(您知道有人可以在不使用Google的情况下编写正则表达式吗?)
所以我更喜欢这种方法:
char lastChar = string.charAt(string.length() - 1)
return Character.isDigit();
如果要对最近的N个字母(而不只是1个字母)进行处理
string.substring(string.length() - n).chars()
.allMatch(Character::isDigit);
答案 3 :(得分:0)
试试这个:
id.matches("^.+?\\d$")
答案 4 :(得分:0)
试一试:
String id = "S000123";
Pattern pattern = Pattern.compile("[ESX][0-9].*");
Matcher matcher = pattern.matcher(id);
System.out.println(matcher.matches());
答案 5 :(得分:0)
那么你可以使用以下代码:
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");