Який найкращий та / або найпростіший спосіб розпізнати, якщо string.charAt (індекс) - це буква Az або число в Java без використання регулярних виразів? Дякую.
Який найкращий та / або найпростіший спосіб розпізнати, якщо string.charAt (індекс) - це буква Az або число в Java без використання регулярних виразів? Дякую.
Відповіді:
Character.isDigit(string.charAt(index))
( JavaDoc ) поверне true, якщо це цифра
Character.isLetter(string.charAt(index))
( JavaDoc ) поверне true, якщо це літера
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
- це насправді символ ÿ. (Малі регістри у з умлаутом.) Кодова точка, що представляє ├, є u251c
.
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
Оскільки відповіді вказують (якщо ви їх уважно вивчаєте!), Ваше питання неоднозначне. Що ви маєте на увазі під «літерою Аз» або цифрою?
Якщо ви хочете дізнатися, чи символом є літера чи цифра Unicode , то скористайтеся методами Character.isLetter
та Character.isDigit
.
Якщо ви хочете дізнатись, чи символ є буквою або цифрою ASCII , то найкраще зробити це перевірити, порівнявши з діапазонами символів 'a' до 'z', 'A' до 'Z' і '0' to '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");
}
}