Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีใช้ trim() ใน TextView ของ Android

บทนำ

ตัวอย่างนี้สาธิตวิธีใช้เมธอด trim() เพื่อตัดช่องว่าง (Whitespace) นำหน้าและท้ายสตริงที่ผู้ใช้กรอกใน EditText ก่อนนำไปแสดงใน TextView

ขั้นตอนที่ 1: สร้างโปรเจกต์

Android Studio → File → New Project → Empty Activity

ขั้นตอนที่ 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:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:padding="16dp"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter name"
        android:inputType="text" />

    <Button
        android:id="@+id/click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="Trim & Show" />

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:textSize="25sp" />

</LinearLayout>

ขั้นตอนที่ 3: โค้ดหลัก (MainActivity.java)

package com.example.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    EditText name;
    Button button;
    TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        name = findViewById(R.id.name);
        button = findViewById(R.id.click);
        text = findViewById(R.id.textview);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String input = name.getText().toString();

                if (!input.isEmpty()) {
                    // ใช้ trim() ตัดช่องว่างนำหน้าและท้าย
                    String trimmed = input.trim();
                    text.setText("Result: '" + trimmed + "'");
                } else {
                    name.setError("Please enter name");
                }
            }
        });
    }
}

ผลลัพธ์

วิธีใช้ trim() ใน TextView ของ Android

ในตัวอย่าง: กรอก " krishna " (มีช่องว่างหน้า-หลัง) → ผลลัพธ์: 'krishna' (ไม่มีช่องว่าง)

คำอธิบาย trim()

  • String.trim() คืนค่า String ใหม่ที่ตัด Leading (นำหน้า) และ Trailing (ท้าย) Whitespace ออก
  • Whitespace รวมถึง: Space ( ), Tab (\t), Newline (\n), Carriage Return (\r), Form Feed (\f)
  • ไม่ตัดช่องว่างกลาง: "a b".trim() → "a b" (คงช่องว่างระหว่างคำ)
  • Immutable: String ใน Java เป็น Immutable ต้องรับค่ากลับมาเก็บในตัวแปรใหม่

เมธอดเกี่ยวข้อง (Java 11+ / API 24+)

เมธอด คำอธิบาย
strip()เหมือน trim() แต่รองรับ Unicode Whitespace ทั้งหมด (แนะนำ Java 11+)
stripLeading()ตัดเฉพาะนำหน้า (Unicode Aware)
stripTrailing()ตัดเฉพาะท้าย (Unicode Aware)
isBlank()ตรวจสอบว่า String ว่างหรือมีแต่ Whitespace (Java 11+)

Android-Specific: TextUtils

import android.text.TextUtils;

// ตรวจสอบว่าว่างหรือมีแต่ Space
if (TextUtils.isEmpty(input)) { ... } // null หรือ ""
if (TextUtils.isBlank(input)) { ... } // API 29+ : "" หรือ "   " หรือ null

// Trim แบบ Android (เหมือน String.trim())
String trimmed = TextUtils.trim(input);

Best Practices สำหรับ Form Input

  • Trim ทันที: String value = editText.getText().toString().trim();
  • Validate หลัง Trim: ตรวจสอบ isEmpty() หลัง Trim แล้ว
  • Input Filter: ใช้ InputFilter จำกัดตัวอักษรหรือความยาว
  • Error UI: ใช้ setError() บน EditText แทน Toast

ตัวอย่างโค้ดสมบูรณ์ (Validation + Trim)

button.setOnClickListener(v -> {
    String raw = name.getText().toString();
    String trimmed = raw.trim();

    if (TextUtils.isEmpty(trimmed)) {
        name.setError("Name cannot be empty");
        return;
    }

    if (trimmed.length() < 2) {
        name.setError("Name too short");
        return;
    }

    // สำเร็จ - ใช้ trimmed
    text.setText("Hello, " + trimmed);
    name.setError(null); // Clear error
});