Java - 检查字符串中的最后一个字符是否为数字

时间:2013-01-30 20:46:40

标签: java

我想知道我可以用来检查字符串中的最后一个字符是否为数字。例如,ID:“S000123”。

我使用以下内容检查它是否以E,S或X开头。

if(! id.startsWith("E") || ! id.startsWith("S") || ! id.startsWith("X")) {
    alertinputError("Incorrect format in the ID field", lineNum);
    return;
}

感谢。

6 个答案:

答案 0 :(得分:6)

您只需使用id.matches(".\\d+")即可。要检查id是否以E开头,SX后跟一串数字,您可以使用

id.matches("[ESX]\\d+")

相关文档

答案 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");