Как читать специальные символы в строке в Java

Мне дана строка, и мне нужно выяснить, содержит ли она какой-либо специальный символ или нет? Я пытался с помощью charAt() и значения ASCII. Но это не сработало. Кто-то, пожалуйста, помогите. Спасибо заранее.

for(int i=0;i<s.length();i++)
{
    char c=s.charAt(i);
    if(65<=c<=90)
    {
        System.out.println("Valid");
    }
    else if(97<=c<=122)
    {
        System.out.println("Invalid as it contains lower case letter");
        break;
    }
    else if(48<=c<=57)
    {
        System.out.println("Invalid as it contains numbers");
        break;
    }
    else
        System.out.println("Invalid as it contains special characters");
}

4 ответа

Решение

Примерно так будет работать:

public static void main(String[] args) {
    String s = "asda®††∆˚∆asd121";
    System.out.println(s.replaceAll("[a-zA-Z0-9]", ""));
}

O / P:

®††∆˚∆

Если размер после замены равен 0, то специальных символов не было. Вы можете обновить регулярное выражение с тем, что вы считаете особенным.:)

Вы можете использовать StringUtils: isAllUpperCase

Или попробуйте что-нибудь подобное, если хотите проверить каждого персонажа.

public static boolean isUpperCase(String s)
    {
        for (int i=0; i<s.length(); i++)
        {
            if (!Character.isUpperCase(s.charAt(i)))
            {
                return false;
            }
        }
        return true;

}

На яве 65<=c<=90 недопустимое сравнение

Вам нужно написать ваши условия, как это:

if (65<=c && c<=90) {
    ...
} else if (97<=c && c<=122) {
    ...
}

Проблема у вас в том, что-то вроде этого: 65<=c<=90 не будет работать в Java. Вы не можете сравнить цепи!

Вам придется написать что-то вроде этого:

if (65 <= c && c <= 90)

Или чтобы улучшить читабельность, я бы посоветовал вам сделать что-то вроде этого:

if ('A' <= c && c <= 'Z')
Другие вопросы по тегам