0

我正在制作一个程序,要求输入一个 5 位字符串,其中包含一个字母,然后是一个“-”和 3 个数字。(例如:A-123)我正在使用带有分隔符“-”的拆分来拆分字母和数字,但如果输入与确切的格式不同,整个事情就会崩溃。所以我的问题是如何阻止任何不符合特定格式的输入。

到目前为止我使用的代码:

public Room(String Combo) {

   if (Combo.length() == 5){
      String delimiter = "-";
      String[] temp = Combo.split(delimiter);
      long FloorRoomNo = Integer.parseInt(temp[1]);
      long Floor = FloorRoomNo/100;
      long RoomNo = FloorRoomNo/100;

      this.Floor = (int)Floor;
      this.RoomNo = (int)RoomNo;
      Buildning = temp[0]:
   }else{
      System.err.println("Wrong input length");
      System.exit(-1);
   }
}
4

1 回答 1

8

您可以使用String#matches方法来检查给定的输入是否处于特定模式。该方法需要一个正则表达式。你可以像这样使用它: -

if (combo.matches("[a-zA-Z]-\\d{3}")) {
    // valid format
}

if如果您的输入字符串是您描述的形式,上述条件将返回 true。IE: -

[a-zA-Z]   // Start with a letter
 -         // Followed by a hyphen
\\d{3}     // And then 3 digits.

请关注Java Naming Convention。以小写字母开头命名变量。


正如评论中指出的,如果您使用上述方法,您甚至不需要拆分。您可以使用capture groups. 因此,将上述模式更改为: -

([a-zA-Z])-(\\d{3})

你的字母和数字分别在第 1组和第 2 组。但是你必须在这里使用PatternMatcher类。

于 2013-01-26T10:08:55.750 回答