Was ist der beste und / oder einfachste Weg, um zu erkennen, ob ein string.charAt (Index) ein Az-Buchstabe oder eine Zahl in Java ist, ohne reguläre Ausdrücke zu verwenden? Vielen Dank.
Was ist der beste und / oder einfachste Weg, um zu erkennen, ob ein string.charAt (Index) ein Az-Buchstabe oder eine Zahl in Java ist, ohne reguläre Ausdrücke zu verwenden? Vielen Dank.
Antworten:
Character.isDigit(string.charAt(index))
( JavaDoc ) gibt true zurück, wenn es sich um eine Ziffer handelt.
Character.isLetter(string.charAt(index))
( JavaDoc ) gibt true zurück, wenn es sich um einen Buchstaben handelt
Character.isLetterOrDigit(string.charAt(index))
für beide Überprüfungen.
Ich suche nach einer Funktion, die nur prüft, ob es sich um einen der lateinischen Buchstaben oder eine Dezimalzahl handelt. Da char c = 255
, was in druckfähiger Version ├ ist und als Brief von betrachtet wird Character.isLetter(c)
. Diese Funktion ist meiner Meinung nach das, wonach die meisten Entwickler suchen:
private static boolean isLetterOrDigit(char c) {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9');
}
u00ff
ist eigentlich das Zeichen ÿ. (Kleinbuchstaben y mit einem Umlaut.) Der Codepunkt, der ├ darstellt, ist u251c
.
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
Wie aus den Antworten hervorgeht (wenn Sie sie sorgfältig prüfen!), Ist Ihre Frage nicht eindeutig. Was meinst du mit "einem Az-Buchstaben" oder einer Ziffer?
Wenn Sie wissen möchten, ob ein Zeichen ein Unicode- Buchstabe oder eine Ziffer ist, verwenden Sie die Methoden Character.isLetter
und Character.isDigit
.
Wenn Sie wissen möchten, ob ein Zeichen ein ASCII- Buchstabe oder eine ASCII- Ziffer ist, testen Sie am besten, indem Sie die Zeichenbereiche 'a' bis 'z', 'A' bis 'Z' und '0' bis vergleichen '9'.
Beachten Sie, dass alle ASCII-Buchstaben / Ziffern Unicode-Buchstaben / Ziffern sind. Es gibt jedoch viele Unicode-Buchstaben / Ziffern, die keine ASCII-Buchstaben sind. Zum Beispiel akzentuierte Buchstaben, kyrillisch, sanskrit, ...
Die allgemeine Lösung besteht darin, dies zu tun:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
und testen Sie dann, ob der Block einer der Blöcke ist, an denen Sie interessiert sind. In einigen Fällen müssen Sie mehrere Blöcke testen. Zum Beispiel gibt es (mindestens) 4 Codeblöcke für kyrillische Zeichen und 7 für Latein. Die Character.UnicodeBlock
Klasse definiert statische Konstanten für bekannte Blöcke. siehe die Javadocs .
Beachten Sie, dass sich jeder Codepunkt höchstens in einem Block befindet.
// 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'))
// ...
Quelle: https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html
if a string.charAt(index) is an A-z letter
. Wir reden also nicht über andere Sprachen, oder?
Vergleichen Sie seinen Wert. Es sollte zwischen dem Wert von 'a' und 'z', 'A' und 'Z', '0' und '9' liegen.
Character.isLetter()
Methode?
Character.isLetter()
es rudimentär. Es sei denn, wir sprechen über Internationalisierung?
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");
}
}