我想检查字符串是否符合以下条件:
例如," Jon Snow"应该验证,以及任何其他名称只包含一个给定名称和一个姓氏,并且没有特殊字符。
确保此验证的最简单方法是什么?
谢谢!
答案 0 :(得分:0)
实际上这很容易。要求#1和#3是最简单的。要测试一个字符串是否包含两个单词并且只用一个空格分隔,只需使用str
方法。对于要求#2,测试字符串的长度是否大于2.
让我们说你要测试的字符串叫String str = "Jon Skeet";
\
String[] splitString = str.split(" ");
boolean test1 = splitString.length == 2;
boolean test2 = true;
for (String s : splitString) {
if s.length() < 2 {
test2 = false;
}
}
您可以创建布尔变量来存储每个测试的结果。它更容易理解。
test1
正如你所看到的,我实际上将单词计数测试和&#34;结合起来,用一个空格&#34;测试成一个。因为可以使用一种方法同时测试它们。
现在您有test2
和true
。您只需要看看它们是否都是if (test1 && test2) {
System.out.println("THE STRING IS VALID!");
}
:
public static boolean isStringValid(String str) {
String[] splitString = str.split(" ");
boolean test1 = splitString.length == 2;
boolean test2 = true;
for (String s : splitString) {
if s.length() < 2 {
test2 = false;
}
}
if (test1 && test2) {
return true;
}
return false;
}
您甚至可以将其作为方法提取:
boolean test = splitString.length > 2 && splitString[0].length() >= 2 && splitString[0].length() >= 2;
或者你可以一次性完成测试,尽管人们很难理解你在做什么。
Character.isLetter
编辑:
如果您想查看它是否只包含字母,请拨打 boolean test2 = true;
boolean test3 = true;
for (String s : splitString) {
for (int i = 0 ; i < s.length() ; i++) {
if (!Character.isLetter(s.charAt(i))) {
test3 = false;
}
}
if (s.length() < 2 && ) {
test2 = false;
break;
}
}
。
Class A{
List<B> bList;
}
Class B{
String code;//Values QT1,QT2.....QT5
Boolean answer;
}
答案 1 :(得分:0)
对于正则表达式部分,您可以尝试:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class TestRegex {
public static void main(String[] args) {
Pattern p = Pattern.compile("[a-zA-Z]+ [a-zA-Z]+");
Matcher m = p.matcher("Jon Skeet");
boolean b = m.matches();
System.out.println(b);
}
}