Подтвердить что ты не робот

Проверьте, содержит ли строка только буквы

Идея состоит в том, чтобы прочитать строку и убедиться, что она не содержит числовых символов. Так что что-то вроде "smith23" было бы неприемлемым.

4b9b3361

Ответ 1

Чего вы хотите? Скорость или простота? Для скорости используйте метод, основанный на петле. Для простоты перейдите на один подход, основанный на использовании линейки RegEx.

Speed ​​

public boolean isAlpha(String name) {
    char[] chars = name.toCharArray();

    for (char c : chars) {
        if(!Character.isLetter(c)) {
            return false;
        }
    }

    return true;
}

Простота

public boolean isAlpha(String name) {
    return name.matches("[a-zA-Z]+");
}

Ответ 2

Ява-выражения Java 8. Оба быстро и просто.

boolean allLetters = someString.chars().allMatch(Character::isLetter);

Ответ 4

Я использовал это выражение регулярного выражения (".*[a-zA-Z]+.*"). С помощью оператора if not он будет избегать всех выражений, которые имеют букву раньше, в конце или между любыми другими символами.

String strWithLetters = "123AZ456";
if(! Pattern.matches(".*[a-zA-Z]+.*", str1))
 return true;
else return false

Ответ 5

A быстрый способ сделать это:

public boolean isStringAlpha(String aString){
    int charCount=0;
    String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    if(aString.length() == 0) return false;//zero length string ain't alpha
    for(int i=0;i<aString.length();i++){
        for(int j=0;j<alphabet.length();j++){
            if(aString.substring(i,i+1).equals(alphabet.substring(j,j+1))
                || aString.substring(i,i+1).equals(alphabet.substring(j,j+1).toLowerCase()))
                charCount++;
        }
        if(charCount != (i+1)){
            System.out.println("\n**Invalid input! Enter alpha values**\n");
            return false;
        }
    }
        return true;
}

Поскольку вам не нужно запускать весь aString, чтобы проверить, не является ли это альфа-строка.

Ответ 6

Ниже приведен более быстрый способ. Учитывая, что буквы являются только a-z, A-Z.

public static void main( String[] args ){ 
        System.out.println(bestWay("azAZpratiyushkumarsinghjdnfkjsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
        System.out.println(isAlpha("azAZpratiyushkumarsinghjdnfkjsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));

        System.out.println(bestWay("azAZpratiyushkumarsinghjdnfkjsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
        System.out.println(isAlpha("azAZpratiyushkumarsinghjdnfkjsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
    }

    public static boolean bettertWay(String name) {
        char[] chars = name.toCharArray();
        long startTimeOne = System.nanoTime();
        for(char c : chars){
            if(!(c>=65 && c<=90)&&!(c>=97 && c<=122) ){
                System.out.println(System.nanoTime() - startTimeOne);
                    return false;
            }
        }
        System.out.println(System.nanoTime() - startTimeOne);
        return true;
    }


    public static boolean isAlpha(String name) {
        char[] chars = name.toCharArray();
        long startTimeOne = System.nanoTime();
        for (char c : chars) {
            if(!Character.isLetter(c)) {
                System.out.println(System.nanoTime() - startTimeOne);
                return false;
            }
        }
        System.out.println(System.nanoTime() - startTimeOne);
        return true;
    }

Время выполнения вычисляется в наносекундах. Он может изменяться в системе.

5748//bettertWay without numbers
true
89493 //isAlpha without  numbers
true
3284 //bettertWay with numbers
false
22989 //isAlpha with numbers
false

Ответ 7

Попробуйте использовать регулярные выражения: String.matches

Ответ 8

private boolean isOnlyLetters(String s){
    char c=' ';
    boolean isGood=false, safe=isGood;
    int failCount=0;
    for(int i=0;i<s.length();i++){
        c = s.charAt(i);
        if(Character.isLetter(c))
            isGood=true;
        else{
            isGood=false;
            failCount+=1;
        }
    }
    if(failCount==0 && s.length()>0)
        safe=true;
    else
        safe=false;
    return safe;
}

Я знаю, что это немного переполнено. Я использовал его с моей программой и почувствовал желание поделиться им с людьми. Он может определить, не является ли какой-либо символ в строке буквой или нет. Используйте его, если вы хотите что-то легко прояснить и оглянуться назад.

Ответ 9

        String expression = "^[a-zA-Z]*$";
        CharSequence inputStr = str;
        Pattern pattern = Pattern.compile(expression);
        Matcher matcher = pattern.matcher(inputStr);
        if(matcher.matches())
        {
              //if pattern matches 
        }
        else
        {
             //if pattern does not matches
        }

Ответ 10

Проверьте это, я думаю, это поможет вам, потому что он работает в моем проекте, поэтому, как только вы проверите этот код

if(! Pattern.matches(".*[a-zA-Z]+.*[a-zA-Z]", str1))
 {
   String not contain only character;
 }
else 
{
  String contain only character;
}

Ответ 11

public boolean isAlpha(String name)
{
    String s=name.toLowerCase();
    for(int i=0; i<s.length();i++)
    {
        if((s.charAt(i)>='a' && s.charAt(i)<='z'))
        {
            continue;
        }
        else
        {
           return false;
        }
    }
    return true;
}