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 = 255yazdı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');
}
u00ffnoktası 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.isLetterve Character.isDigityö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.UnicodeBlockSı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");
}
}