如何快速检查Java字符串上的各种字母包含条件?

如何快速检查Java字符串上的各种字母包含条件?,java,string,ascii,Java,String,Ascii,在Java中,检查字符串变量的以下条件的快速(执行时间)和紧凑(代码量)方法是什么: 变量包含任何英文字母(大写或小写,因此a-zA-Z) 变量只包含这样的字母 至少X%的字符是这样的字母 以任何这样的信开头 Character.isleter()方法告知字符是否为字母。它实际上适用于任何语言,不仅仅是英语。迭代字符串的所有字符让我们称之为text并计算字母数 int letters = 0; for (char c : text.toCharArray()) { if (Charact

在Java中,检查
字符串
变量的以下条件的快速(执行时间)和紧凑(代码量)方法是什么:

  • 变量包含任何英文字母(大写或小写,因此
    a-zA-Z
  • 变量只包含这样的字母
  • 至少X%的字符是这样的字母
  • 以任何这样的信开头
  • Character.isleter()
    方法告知字符是否为字母。它实际上适用于任何语言,不仅仅是英语。迭代
    字符串的所有字符
    让我们称之为
    text
    并计算字母数

    int letters = 0;
    for (char c : text.toCharArray()) {
        if (Character.isLetter(c) {
            ++letters;
        }
    }
    
    或者如果您更喜欢Java8流

    long letters = text.chars().filter(Character::isLetter).count();
    
    获得字母数后:

    if (letters > 0) {
        // variable contains any English letters
    }
    
    if (letters == text.length()) {
        // variable contains only English letters
    }
    
    if ((double)letters/(double)text.length() >= (double)X/100.0) {
        // at least X% of chars are letters
    }
    
    if (text.length() > 0 && Character.isLetter(text.charAt(0))) {
        // starts with letter
    }
    
    Character.isleter()
    方法告知字符是否为字母。它实际上适用于任何语言,不仅仅是英语。迭代
    字符串的所有字符
    让我们称之为
    text
    并计算字母数

    int letters = 0;
    for (char c : text.toCharArray()) {
        if (Character.isLetter(c) {
            ++letters;
        }
    }
    
    或者如果您更喜欢Java8流

    long letters = text.chars().filter(Character::isLetter).count();
    
    获得字母数后:

    if (letters > 0) {
        // variable contains any English letters
    }
    
    if (letters == text.length()) {
        // variable contains only English letters
    }
    
    if ((double)letters/(double)text.length() >= (double)X/100.0) {
        // at least X% of chars are letters
    }
    
    if (text.length() > 0 && Character.isLetter(text.charAt(0))) {
        // starts with letter
    }
    

    正则表达式?除了你的第三个选项。一个IntStream,其中anyMatch为1,allMatch为2,filter and count()为3,limit and anyMatch为4。正则表达式?除了第三个选项之外。一个IntStream,其中anyMatch为1,allMatch为2,filter and count()为3,limit and anyMatch为4。