Giới thiệu
Sử dụng TextUtils.isDigitsOnly() để kiểm tra nhanh chuỗi có chỉ chứa ký tự số (0-9) hay không. Hữu ích cho validation input: điện thoại, mã OTP, số thẻ, năm sinh...
Triển khai
Bước 1: Tạo dự án
Android Studio → New Project → Empty Activity.
Bước 2: Layout (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/edit_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nhập chuỗi cần kiểm tra"
android:inputType="text" />
<Button
android:id="@+id/btn_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Kiểm tra chỉ số" />
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
Bước 3: MainActivity.java
package com.example.myapplication;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText editInput;
TextView tvResult;
Button btnCheck;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editInput = findViewById(R.id.edit_input);
tvResult = findViewById(R.id.tv_result);
btnCheck = findViewById(R.id.btn_check);
btnCheck.setOnClickListener(v -> validateDigits());
// Test nhanh với chuỗi cố định
String test = "123456789";
boolean isDigits = TextUtils.isDigitsOnly(test);
tvResult.setText("Test '123456789': " + isDigits);
}
private void validateDigits() {
String input = editInput.getText().toString();
if (input.isEmpty()) {
Toast.makeText(this, "Vui lòng nhập chuỗi", Toast.LENGTH_SHORT).show();
return;
}
boolean isDigitsOnly = TextUtils.isDigitsOnly(input);
String result = isDigitsOnly ? "✓ CHỈ CHỨA SỐ" : "✗ CHỨA KÝ TỰ KHÁC";
tvResult.setText(result);
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
}
}
Các phương thức liên quan trong TextUtils
| Phương thức | Mô tả | Ví dụ true | Ví dụ false |
|---|---|---|---|
| isDigitsOnly(CharSequence) | Chỉ chứa 0-9 | "12345" | "12a45", "12.34", "-123" |
| isEmpty(CharSequence) | Rỗng hoặc null | "" | "abc" |
| isGraphic(CharSequence) | Chứa ký tự in được (không space) | "abc" | "a b" |
| isPrintable(CharSequence) | Ký tự in được (có space) | "a b" | chứa control char |
Regex thay thế (linh hoạt hơn)
// Chỉ số 0-9
boolean onlyDigits = input.matches("^\\d+$");
// Số có dấu + thập phân
boolean isNumber = input.matches("^-?\\d+(\\.\\d+)?$");
// Số điện thoại VN đơn giản
boolean isPhoneVN = input.matches("^(0|\\+84)[0-9]{9,10}$");
Kết quả
Nhập "12345" → "✓ CHỈ CHỨA SỐ"
Nhập "123abc" → "✗ CHỨA KÝ TỰ KHÁC"
Nhập "" → Toast "Vui lòng nhập chuỗi"
Lưu ý:TextUtils.isDigitsOnly()trả vềfalsecho chuỗi rỗng. Kiểm traisEmpty()trước nếu cần phân biệt.