Pertanyaan Apa perbedaan antara Character.isAlphabetic dan Character.isLetter di Java?


Apa perbedaan antara Character.isAlphabetic () dan Character.isLetter () di Java? Kapan sebaiknya menggunakan satu dan kapan harus menggunakan yang lain?


32
2017-08-18 23:55


asal


Jawaban:


Menurut Dokumen API, isLetter () mengembalikan nilai true jika karakter memiliki salah satu dari jenis kategori umum berikut: UPPERCASE_LETTER (Lu), LOWERCASE_LETTER (Ll), TITLECASE_LETTER (Lt), MODIFIER_LETTER (Lm), OTHER_LETTER (Lo). Jika kita membandingkan isAlphabetic (), itu memiliki yang sama tetapi menambahkan LETTER_NUMBER (Nl), dan juga setiap karakter yang memiliki properti Other_Alphabetic.

Apa artinya ini dalam praktik? Setiap huruf adalah abjad, tetapi tidak setiap huruf adalah huruf - di Java 7 (yang menggunakan Unicode 6.0.0), ada 824 karakter dalam BMP yang abjad tetapi bukan huruf. Beberapa contoh termasuk 0345 (penggabung yang digunakan dalam bahasa Yunani poltonik), titik-titik vokal Ibrani (niqqud) mulai dari 05B0, kehormatan bahasa Arab seperti melihat ("saw") pada 0610, huruf vokal bahasa Arab ... daftarnya terus berlanjut.

Tapi pada dasarnya, untuk teks bahasa Inggris, perbedaannya tidak ada bedanya. Untuk beberapa bahasa lain, perbedaannya mungkin membuat perbedaan, tetapi sulit untuk memprediksi sebelumnya apa perbedaannya mungkin dalam praktek. Jika seseorang memiliki pilihan, jawaban terbaiknya adalahLetter () - seseorang selalu dapat mengubah untuk mengizinkan karakter tambahan di masa depan, tetapi mengurangi set karakter yang diterima mungkin lebih sulit.


32
2017-08-18 23:55