如何检查字符串是否匹配特定表达式?

How to check if a string matches a specific expression?

我想编写一个方法来检查字符串是否符合以下格式:Java 中的“Name Surname”。 Name和Surname之间最多space,且name和surname的首字母都要大写

这是我所做的:

public static Boolean correctFormat(ArrayList<String> e) 
   { 
       int x = 0; 
       for(int i = 0; i < e.size(); i++) 
       { 
           if (e.get(i).indexOf(" ") != -1 && str.substring() 
           { 
               x++; 
           } 
           
  }  

但是,我找不到检查名字和姓氏首字母是否大写的方法。名字和姓氏的长度可能不同。

注意:该方法的参数是ArrayList,所以以ArrayList为输入。

您可以使用字符串拆分和 character.isuppercase() 以及循环过程来解决您的问题,如下所示

public class Test {

    public static boolean validateString(String string){
        String[] stringArray = string.split(" ");
        if(null == string || stringArray.length>2 || stringArray.length == 1) return false;
        for(String s : stringArray){
            if(!(Character.isUpperCase(s.toCharArray()[0])))return false;
        }
        return true;
    }

    public static void main(String[] args) {
        String s  = "Hello World";
        List<String> names = new ArrayList<>();
        names.add(s);
        names.forEach(string -> System.out.println("Is the string "+string+" valid :"+ validateString(s)));
        
    }
    
}

输出:字符串 Hello World 是否有效:true

您可以使用正则表达式检查条件并使用 for-each 循环遍历 ArrayList。

    public static Boolean correctFormat(ArrayList<String> e)
    {
        String camelCasePattern = "([A-Z][a-z]+ [A-Z][a-z]+)";
        for(String s : e)
            if(!s.matches(camelCasePattern))
                return false;
        return true;
    }

只有当 ArrayList e 中的所有元素都按照定义的模式匹配时,以上代码才会 return 为真。