2

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

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

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

谢谢。

4

6 回答 6

8

你可以简单地使用id.matches(".\\d+"). 但是,要检查是否id以 开头或后跟一串数字,您可以使用ESX

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

相关文件

于 2013-01-30T20:49:35.223 回答
2

我知道这是一篇非常古老的文章,但对于未来的读者,我想我会添加一种不同的方法。

我个人发现正则表达式非常难读(你知道有人可以在不使用谷歌的情况下编写正则表达式吗?)

所以我更喜欢这种方法:

 char lastChar = string.charAt(string.length() - 1)
 return Character.isDigit();

如果你想为最后 N 个字母而不是 1 做它:

string.substring(string.length() - n).chars()
            .allMatch(Character::isDigit);
于 2020-09-05T21:46:00.790 回答
1

正则表达式可能在这里工作得很好。

String foo = "bar123";
Pattern p = Pattern.compile(".*[0-9]+$");
Matcher m = p.matcher(foo);
if(m.matches)
    System.out.println("yeah!");

因此,如果字符串由任何一串字符组成,后跟一个或多个数字,这将打印“是的!”。

于 2013-01-30T20:53:03.950 回答
0

试试这个:

id.matches("^.+?\\d$")

于 2013-01-30T20:50:47.500 回答
0

尝试一下:

String id = "S000123";
Pattern pattern = Pattern.compile("[ESX][0-9].*");
Matcher matcher =  pattern.matcher(id);
System.out.println(matcher.matches());
于 2013-01-30T20:58:33.080 回答
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");
于 2013-01-30T21:16:09.790 回答