Каков наилучший способ определить, является ли символ буквой или числом в Java без использования регулярных выражений?



каков лучший и / или самый простой способ распознать, если строка.charAt (индекс)-это буква A-z или число в Java без использования регулярных выражений? Спасибо.

12422   9  

9 ответов:

Character.isDigit(string.charAt(index)) (документация) вернет true, если это цифра
Character.isLetter(string.charAt(index)) (документация) вернет true, если это буква

как показывают ответы (если вы внимательно их изучите!), ваш вопрос неоднозначен. Что вы подразумеваете под" буквой A-z " или цифрой?

  • если вы хотите знать, является ли символ Unicode буква или цифра, затем используйте Character.isLetter и Character.isDigit методы.

  • если вы хотите знать, является ли символ ASCII буква или цифра, то лучше всего сделать, чтобы проверить, сравнивая с диапазонами символов 'a' до "z", " A " до " Z " и " 0 " до "9".

обратите внимание, что все буквы / цифры ASCII являются буквами / цифрами Юникода ... но есть много символов Unicode букв / цифр, которые не являются ASCII. Например, акцентированные буквы, кириллица, санскрит ...


общее решение состоит в том, чтобы сделать это:

Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);

а затем проверить, если блок является одним из тех, которые вас интересуют. В некоторых случаях необходимо проверить несколько блоки. Например, есть (по крайней мере) 4 блока кода для кириллицы и 7 для латиницы. Элемент Character.UnicodeBlock класс определяет статические константы для известных блоков; см. javadocs.

обратите внимание, что любая кодовая точка будет находиться в максимум один блок.

Я ищу функцию, которая проверяет, только если это одна из букв латинского алфавита или цифрами. Так как char c = 255, который в печатной версии составляет и рассматривается как письмо от Character.isLetter(c). Эта функция я думаю, что это то, что большинство разработчиков ищут:

private static boolean isLetterOrDigit(char c) {
    return (c >= 'a' && c <= 'z') ||
           (c >= 'A' && c <= 'Z') ||
           (c >= '0' && c <= '9');
}

класс символов Java имеет isLetterOrDigit метод начиная с версии 1.0.2

Я не знаю о best, но это кажется мне довольно простым:

Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))

сравните его значение. Он должен быть между значениями 'a' и 'z', 'A' и 'Z', '0'и ' 9'

// check if ch is a letter
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
    // ...

// check if ch is a digit
if (ch >= '0' && ch <= '9')
    // ...

// check if ch is a whitespace
if ((ch == ' ') || (ch =='\n') || (ch == '\t'))
    // ...

Источник:https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html

 import java.util.Scanner;
 public class v{
 public static void main(String args[]){
 Scanner in=new Scanner(System.in);
    String str;
    int l;
    int flag=0;
    System.out.println("Enter the String:");
    str=in.nextLine();
    str=str.toLowerCase();
    str=str.replaceAll("\s","");
    char[] ch=str.toCharArray();
    l=str.length();
    for(int i=0;i<l;i++){
        if ((ch[i] >= 'a' && ch[i]<= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z')){
        flag=0;
        }
        else

        flag++;
        break;
        } 
if(flag==0)
    System.out.println("Onlt char");


}
}

использовать ниже код

Character.isLetterOrDigit(string.charAt(index))

Comments

    Ничего не найдено.