Giới thiệu
Bài viết minh họa cách kiểm tra ký tự đầu tiên của chuỗi nhập vào EditText có phải là chữ cái (alphabet A-Z, a-z) hay không.
Các bước thực hiện
Bước 1: Tạo project mới
Android Studio → File → New Project → Empty Activity.
Bước 2: Giao diện (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="16dp">
<EditText
android:id="@+id/etInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nhập chuỗi bất kỳ"
android:inputType="text" />
<Button
android:id="@+id/btnCheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Kiểm tra" />
</LinearLayout>
Bước 3: Logic xử lý (MainActivity.kt)
package com.example.checkalphabet
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnCheck.setOnClickListener {
val input = etInput.text.toString().trim()
if (input.isEmpty()) {
Toast.makeText(this, "Vui lòng nhập dữ liệu", Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
val firstChar = input.first()
val isAlphabet = firstChar.isLetter() // Kiểm tra Unicode letter
// Nếu chỉ muốn A-Z, a-z (ASCII):
// val isAsciiLetter = firstChar in 'a'..'z' || firstChar in 'A'..'Z'
val result = if (isAlphabet) {
"Ký tự '$firstChar' LÀ chữ cái"
} else {
"Ký tự '$firstChar' KHÔNG phải chữ cái"
}
Toast.makeText(this, result, Toast.LENGTH_LONG).show()
}
}
}
Giải thích
Char.isLetter(): Trả về true nếu ký tự là chữ cái theo Unicode (bao gồm tiếng Việt, tiếng Nhật, tiếng Nga, v.v.).Char.isDigit(): Kiểm tra số 0-9.Char.isLetterOrDigit(): Chữ hoặc số.firstChar in 'a'..'z': Range check chỉ cho ASCII lowercase.
So sánh các phương pháp
| Phương pháp | Phạm vi | Ví dụ true | Ví dụ false |
|---|---|---|---|
isLetter() |
Unicode Letter | a, Z, à, é, あ, 한 | 1, @, space |
in 'a'..'z' || in 'A'..'Z' |
ASCII Only | a, Z | à, é, 1, @ |
Character.isAlphabetic() (Java) |
Unicode Alphabetic | a, à, 한 | 1, @ |
Lưu ý
- Luôn
.trim()trước khi lấy ký tự đầu để tránh khoảng trắng. - Kiểm tra
isEmpty()trước khi gọifirst()để tránh crash. - Với tiếng Việt có dấu,
isLetter()trả về true (đúng mong đợi).