验证字符串(Java)的最简单方法

时间:2016-02-02 04:38:40

标签: java regex string validation

我想检查字符串是否符合以下条件:

  • 由两个字组成
  • 每个单词只包含字母(A-Z和a-z),并且至少有两个字母
  • 两个单词之间只有一个空格

例如," Jon Snow"应该验证,以及任何其他名称只包含一个给定名称和一个姓氏,并且没有特殊字符。

确保此验证的最简单方法是什么?

谢谢!

2 个答案:

答案 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;测试成一个。因为可以使用一种方法同时测试它们。

现在您有test2true。您只需要看看它们是否都是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);
    }
}