Normal ifadeler kullanmadan bir string.charAt (index) 'in Java'da bir Az harf mi yoksa bir sayı mı olduğunu anlamanın en iyi ve / veya en kolay yolu nedir? Teşekkürler.
Normal ifadeler kullanmadan bir string.charAt (index) 'in Java'da bir Az harf mi yoksa bir sayı mı olduğunu anlamanın en iyi ve / veya en kolay yolu nedir? Teşekkürler.
Yanıtlar:
Character.isDigit(string.charAt(index))
( JavaDoc ) bir rakamsa doğru döndürür
Character.isLetter(string.charAt(index))
( JavaDoc ) bir harf ise true döndürür
Character.isLetterOrDigit(string.charAt(index))
Her iki doğrulama için de kullanın .
Yalnızca Latin harflerinden biri mi yoksa ondalık sayı mı olduğunu kontrol eden bir işlev arıyorum. Yana char c = 255
yazdırılabilir versiyonu olan ├ ve bir mektup olarak kabul Character.isLetter(c)
. Bence çoğu geliştiricinin aradığı bu işlev:
private static boolean isLetterOrDigit(char c) {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9');
}
u00ff
noktası aslında ÿ karakteridir. (Küçük harfli y ve iki nokta.) ├'yi temsil eden kod noktası u251c
.
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
Cevapların da gösterdiği gibi (eğer dikkatlice incelerseniz!), Sorunuz belirsizdir. "Az harf" veya rakamla ne demek istiyorsun?
Bir karakterin Unicode harf mi yoksa rakam mı olduğunu bilmek istiyorsanız , Character.isLetter
ve Character.isDigit
yöntemlerini kullanın .
Bir karakterin ASCII harf mi yoksa rakam mı olduğunu bilmek istiyorsanız , yapılacak en iyi şey, 'a' - 'z', 'A' - 'Z' ve '0' karakter aralıklarını karşılaştırarak test etmektir. '9'.
Tüm ASCII harflerinin / rakamlarının Unicode harfler / rakamlar olduğunu unutmayın ... ancak ASCII olmayan birçok Unicode harf / rakam karakteri vardır. Örneğin, aksanlı harfler, kiril, sanskritçe, ...
Genel çözüm, bunu yapmaktır:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
ve sonra bloğun ilgilendiğiniz bloklardan biri olup olmadığını test edin. Bazı durumlarda birden fazla bloğu test etmeniz gerekecektir. Örneğin, Kiril karakterleri için (en az) 4 kod bloğu ve Latin için 7 kod bloğu vardır. Character.UnicodeBlock
Sınıf iyi bilinen bloklar için statik sabitleri tanımlar; javadocs bakın .
Herhangi bir kod noktasının en fazla bir blokta .
Java Character sınıfı, 1.0.2 sürümünden beri bir isLetterOrDigit yöntemine sahiptir
En iyisini bilmiyorum ama bu bana oldukça basit geliyor:
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'))
// ...
Kaynak: https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html
if a string.charAt(index) is an A-z letter
. Yani diğer dillerden bahsetmiyoruz, değil mi?
Değerini karşılaştırın. "A" ve "z", "A" ve "Z", "0" ve "9" değerleri arasında olmalıdır
Character.isLetter()
yöntemden daha mı iyi?
Character.isLetter()
. Uluslararasılaşmadan bahsetmiyorsak?
Aşağıdaki kodu kullanın
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");
}
}