-2

我希望检查字符串是否在指定位置包含字母或数字。

这是问题所在:

我有一个长度为 2 的输入字符串。该字符串的格式为"a1"。我正在为这些类型的字符串制作验证方法。

要求:

  • 索引位置 0 处的字母必须是以下字母之一:a、b、c、d、e、f、g、h
  • 索引位置 1 处的数字/数字必须是以下数字之一:1、2、3、4、5、6、7、8

谢谢!

4

5 回答 5

4

正则表达式

input.matches("^[abcdefgh][12345678]$");

编辑:

这相当于:

input.matches("^[a-h][1-8]$");
  • ^ 将匹配检查锚定到输入字符串的开头。
  • [ah] 表示字符串中的第一个字符(在 ^ 之后)可以是字符 a 到 h 中的一个。
  • [1-8] 表示第二个字符可以是 1 到 8。
  • $ 表示 [1-8] 之后的下一件事必须是字符串的结尾。
于 2013-05-06T13:56:41.000 回答
1

简单的答案:提取第 n 个字母并检查它是数字还是字母:

isaletter(mystring.charAt(0));
isanumber(mystring.charAt(1));

灵活的答案:使用正则表达式。你需要了解一些关于它们的知识,但它们提供了很大的灵活性。

于 2013-05-06T13:56:59.390 回答
0

Is speed, memory, or efficiency important? Looks like you should make two lists, loop through them (nested), then test if the concatenated list values are ==. Like ((myList(indexOuter) + my2ndList(indexInner)) == "theListHoldingYourStrings(stringIndex)). I'm new to Java and don't know what the fastest, efficient methods are however.

Use a 64 member switch statement.

switch(stringToTest) {
case "a1":  System.out.println("Valid");
             break;
case "a2": System.out.println("Valid");
             break;

. . .

于 2013-05-06T14:14:48.850 回答
0

尝试正则表达式

 str.matches("[a-h][1-8]");
于 2013-05-06T13:56:39.203 回答
0

将其转换为 char 数组 "a1".toCharArray()

将 char[0] 与您的字段 'a'....'h' 进行比较,您可以使用 == 现在它是一个原始类型,如 chars[0] == 'a'。

您可以对 chars[1] == '1'.... 执行相同的操作。

如果这样做,则必须与字符值进行比较。

于 2013-05-06T14:06:26.797 回答