Apa cara terbaik dan / atau termudah untuk mengenali jika string.charAt (index) adalah huruf Az atau angka di Java tanpa menggunakan ekspresi reguler? Terima kasih.
Apa cara terbaik dan / atau termudah untuk mengenali jika string.charAt (index) adalah huruf Az atau angka di Java tanpa menggunakan ekspresi reguler? Terima kasih.
Jawaban:
Character.isDigit(string.charAt(index))
( JavaDoc ) akan mengembalikan nilai true jika itu adalah digit
Character.isLetter(string.charAt(index))
( JavaDoc ) akan mengembalikan nilai true jika berupa huruf
Character.isLetterOrDigit(string.charAt(index))
untuk kedua verifikasi.
Saya mencari fungsi yang memeriksa hanya apakah itu salah satu huruf Latin atau angka desimal. Karena char c = 255
, yang dalam versi cetak adalah ├ dan dianggap sebagai surat oleh Character.isLetter(c)
. Fungsi ini menurut saya adalah yang paling dicari oleh sebagian besar pengembang:
private static boolean isLetterOrDigit(char c) {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9');
}
u00ff
kode unicode sebenarnya adalah karakter ÿ. (Huruf kecil y dengan umlaut.) Titik kode yang mewakili ├ adalah u251c
.
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
Seperti yang ditunjukkan oleh jawaban (jika Anda memeriksanya dengan cermat!), Pertanyaan Anda tidak jelas. Apa yang Anda maksud dengan "huruf Az" atau angka?
Jika Anda ingin mengetahui apakah suatu karakter adalah huruf atau angka Unicode , gunakan metode Character.isLetter
dan Character.isDigit
.
Jika Anda ingin mengetahui apakah suatu karakter berupa huruf atau angka ASCII , maka hal terbaik yang harus dilakukan adalah mengujinya dengan membandingkan dengan rentang karakter 'a' hingga 'z', 'A' hingga 'Z' dan '0' hingga '9'.
Perhatikan bahwa semua huruf / digit ASCII adalah huruf / digit Unicode ... tetapi ada banyak huruf / digit Unicode karakter yang bukan ASCII. Misalnya, huruf beraksen, cyrillic, sanskrit, ...
Solusi umumnya adalah melakukan ini:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
dan kemudian uji untuk melihat apakah blok tersebut adalah salah satu blok yang Anda minati. Dalam beberapa kasus, Anda perlu menguji beberapa blok. Misalnya, ada (setidaknya) 4 blok kode untuk karakter Sirilik dan 7 untuk Latin. The Character.UnicodeBlock
kelas mendefinisikan konstanta statis untuk blok terkenal; lihat javadocs .
Perhatikan bahwa setiap titik kode akan berada di paling satu blok.
Kelas Karakter Java memiliki metode isLetterOrDigit sejak versi 1.0.2
Saya tidak tahu tentang yang terbaik, tetapi ini tampaknya cukup sederhana bagi saya:
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'))
// ...
Sumber: https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html
if a string.charAt(index) is an A-z letter
. Jadi kita tidak sedang membicarakan bahasa lain kan?
Bandingkan nilainya. Ini harus berada di antara nilai 'a' dan 'z', 'A' dan 'Z', '0' dan '9'
Character.isLetter()
?
Character.isLetter()
belum sempurna. Kecuali jika kita berbicara tentang internasionalisasi?
Gunakan kode di bawah ini
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");
}
}