Каков наилучший и / или самый простой способ распознать, является ли string.charAt (index) буквой Az или числом в Java без использования регулярных выражений? Спасибо.
Каков наилучший и / или самый простой способ распознать, является ли string.charAt (index) буквой Az или числом в Java без использования регулярных выражений? Спасибо.
Ответы:
Character.isDigit(string.charAt(index))
( JavaDoc ) вернет истину, если это цифра
Character.isLetter(string.charAt(index))
( JavaDoc ) вернет истину, если это буква
Character.isLetterOrDigit(string.charAt(index))
для обеих проверок.
Я ищу функцию, которая проверяет, только ли это одна из латинских букв или десятичное число. Так 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');
}
u00ff
- это фактически символ ÿ. (Буква y в нижнем регистре с умляутом.) Код, представляющий, - u251c
.
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
Как показывают ответы (если вы внимательно их изучите!), Ваш вопрос неоднозначен. Что вы подразумеваете под «буквой Az» или цифрой?
Если вы хотите знать , если символ является Unicode буква или цифра, а затем использовать Character.isLetter
и Character.isDigit
методы.
Если вы хотите узнать, является ли символ буквой или цифрой ASCII , то лучше всего проверить, сравнив с диапазонами символов от «a» до «z», от «A» до «Z» и от «0» до '9'.
Обратите внимание, что все буквы / цифры ASCII являются буквами / цифрами Unicode ... но есть много букв / цифр Unicode, которые не являются ASCII. Например, буквы с ударением, кириллица, санскрит, ...
Общее решение - сделать это:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
а затем проверьте, является ли блок одним из тех, которые вас интересуют. В некоторых случаях вам нужно будет проверить несколько блоков. Например, есть (как минимум) 4 кодовых блока для кириллических символов и 7 для латиницы. Character.UnicodeBlock
Класс определяет статические константы для хорошо известных блоков; см. javadocs .
Обратите внимание, что любая кодовая точка будет находиться не более чем в одном блоке.
Класс символов Java имеет метод isLetterOrDigit, начиная с версии 1.0.2.
Не знаю, как лучше, но мне это кажется довольно простым:
Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))
// 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
if a string.charAt(index) is an A-z letter
. Так мы ведь не говорим о других языках?
Сравните его ценность. Он должен быть между значениями «a» и «z», «A» и «Z», «0» и «9».
Character.isLetter()
?
Character.isLetter()
это элементарно. Разве мы говорим об интернационализации?
Используйте приведенный ниже код
Character.isLetterOrDigit(string.charAt(index))
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");
}
}