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

โปรแกรม Java พิมพ์ตัวอักษรแรกของแต่ละคำด้วย Regex


บทนำ

ในบทความนี้ เราจะเรียนรู้วิธีการพิมพ์ตัวอักษรแรกของแต่ละคำในสตริงด้วย Regular Expression (Regex) Regular Expression คือลำดับของตัวอักษรที่สร้างเป็นรูปแบบการค้นหา (Search pattern) อาจเป็นตัวอักษรเดียวหรือรูปแบบซับซ้อนก็ได้

Regular Expression ช่วยให้คุณจับคู่หรือค้นหาสตริงหรือเซตของสตริงอื่นๆ ได้ โดยใช้ syntax เฉพาะที่เก็บอยู่ใน pattern สามารถนำไปใช้ค้นหา แก้ไข หรือจัดการข้อความและข้อมูลได้

ตัวอย่างการทำงาน

อินพุทตัวอย่าง:

Input String_1: Java Program
Input String_2: Joy of learning

เอาต์พุทที่คาดหวัง:

Result_1: JP
Result_2: Jol

อัลกอริทึม

ขั้นตอนที่ 1 - เริ่มต้น
ขั้นตอนที่ 2 - ประกาศสตริงสองตัว: input_string_1, input_string_2, Pattern string_pattern และ Matcher string_matcher
ขั้นตอนที่ 3 - กำหนดค่า
ขั้นตอนที่ 4 - ใช้ while-loop คำนวณ string_matcher.group() เพื่อดึงตัวอักษรแรกของแต่ละคำ
ขั้นตอนที่ 5 - แสดงผลลัพธ์
ขั้นตอนที่ 6 - จบการทำงาน

ตัวอย่างที่ 1: เขียนในฟังก์ชัน main โดยตรง

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {
    public static void main(String[] args) {
        System.out.println("Required packages have been imported");
        String input_string_1 = "Java Program";
        System.out.println("\nThe first string is defined as: " + input_string_1);
        Pattern string_pattern = Pattern.compile("\\b[a-zA-Z]");
        Matcher string_matcher = string_pattern.matcher(input_string_1);
        System.out.println("The first letters of the string is : ");
        while (string_matcher.find()) {
            System.out.print(string_matcher.group());
        }
        System.out.println();
        
        String input_string_2 = "Joy of learning";
        System.out.println("\nThe second string is defined as: " + input_string_2);
        Matcher string_matcher_2 = string_pattern.matcher(input_string_2);
        System.out.println("The first letters of the string is : ");
        while (string_matcher_2.find()) {
            System.out.print(string_matcher_2.group());
        }
        System.out.println();
    }
}

เอาต์พุท

Required packages have been imported
The first string is defined as: Java Program
The first letters of the string is : JP
The second string is defined as: Java Program
The first letters of the string is : Jol

⚠️ หมายเหตุ: โค้ดต้นฉบับมีบั๊กบรรทัดสุดท้าย: `System.out.println("\nThe second string is defined as: " + input_string_1);` ควรเป็น `input_string_2`

ตัวอย่างที่ 2: ใช้เมธอดแยก (Object-Oriented Style)

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {
    static void print_regex_string(String s) {
        Pattern string_pattern = Pattern.compile("\\b[a-zA-Z]");
        Matcher string_matcher = string_pattern.matcher(s);
        System.out.println("The first letters of the string is : ");
        while (string_matcher.find()) {
            System.out.print(string_matcher.group());
        }
        System.out.println();
    }
    
    public static void main(String[] args) {
        System.out.println("Required packages have been imported");
        String input_string_1 = "Java Program";
        System.out.println("\nThe first string is defined as: " + input_string_1);
        print_regex_string(input_string_1);
        String input_string_2 = "Joy of learning";
        System.out.println("\nThe second string is defined as: " + input_string_2);
        print_regex_string(input_string_2);
    }
}

เอาต์พุท

Required packages have been imported
The first string is defined as: Java Program
The first letters of the string is : JP
The second string is defined as: Java Program
The first letters of the string is : Jol

⚠️ หมายเหตุ: โค้ดต้นฉบับบรรทัด `System.out.println("\nThe second string is defined as: " + input_string_1);` ควรเป็น `input_string_2` (แก้ไขแล้วในตัวอย่างข้างต้น)

อธิบาย Regex Pattern: `\\b[a-zA-Z]`

  • `\\b` - Word boundary (ขอบเขตของคำ)
  • `[a-zA-Z]` - ตัวอักษรอังกฤษพิมพ์ใหญ่หรือเล็ก ตัวใดตัวหนึ่ง
  • รวมกัน = ตัวอักษรแรกของแต่ละคำ

ขยายสำหรับ Unicode (ภาษาไทย ฯลฯ): ใช้ `\\p{L}` แทน `[a-zA-Z]`