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ただし、が で始まるかESまたはその後に数字の文字列が続くかを確認するXには、次を使用できます。

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

関連ドキュメント

于 2013-01-30T20:49:35.223 に答える
1

ここでは正規表現がうまく機能する可能性があります。

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

そのため、文字列が一連の文字とそれに続く 1 つ以上の数字で構成されている場合、これは "yeah!" を出力します。

于 2013-01-30T20:53:03.950 に答える
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 に答える
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 に答える