我希望检查字符串是否在指定位置包含字母或数字。
这是问题所在:
我有一个长度为 2 的输入字符串。该字符串的格式为"a1"。我正在为这些类型的字符串制作验证方法。
要求:
- 索引位置 0 处的字母必须是以下字母之一:a、b、c、d、e、f、g、h
- 索引位置 1 处的数字/数字必须是以下数字之一:1、2、3、4、5、6、7、8
谢谢!
正则表达式
input.matches("^[abcdefgh][12345678]$");
编辑:
这相当于:
input.matches("^[a-h][1-8]$");
简单的答案:提取第 n 个字母并检查它是数字还是字母:
isaletter(mystring.charAt(0));
isanumber(mystring.charAt(1));
灵活的答案:使用正则表达式。你需要了解一些关于它们的知识,但它们提供了很大的灵活性。
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;
. . .
尝试正则表达式
str.matches("[a-h][1-8]");
将其转换为 char 数组 "a1".toCharArray()
将 char[0] 与您的字段 'a'....'h' 进行比较,您可以使用 == 现在它是一个原始类型,如 chars[0] == 'a'。
您可以对 chars[1] == '1'.... 执行相同的操作。
如果这样做,则必须与字符值进行比较。