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

โปรแกรม Java แทรกสตริงเข้าไปในสตริงอีกตัวหนึ่ง


บทนำ

ในบทความนี้ เราจะเรียนรู้วิธีการแทรกสตริง (Insert a string) เข้าไปในสตริงอีกตัวหนึ่ง สตริงเป็นชนิดข้อมูลที่ประกอบด้วยตัวอักษรหนึ่งตัวขึ้นไป และล้อมรอบด้วยเครื่องหมายคำพูดคู่ (" ")

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

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

First string is defined as: Java Program
Second string: Learning
String to be inserted at index: 0

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

The result is: LearningJava Program

อัลกอริทึม

ขั้นตอนที่ 1 - เริ่มต้น
ขั้นตอนที่ 2 - ประกาศสตริงสองตัว: input_string_1, input_string_2 และออบเจ็กต์สตริง result
ขั้นตอนที่ 3 - กำหนดค่า
ขั้นตอนที่ 4 - วนลูปผ่านสตริงแรก ต่อสตริงที่สองที่ตำแหน่ง 'i' ของสตริงแรก
ขั้นตอนที่ 5 - แสดงผลลัพธ์
ขั้นตอนที่ 6 - จบการทำงาน

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

public class StringInsert {
    public static void insertString(String input_string_1, String input_string_2, int index) {
    }
    
    public static void main(String[] args) {
        String input_string_1 = " Java Program";
        String input_string_2 = "Learning";
        int index = 0;
        System.out.println("The first string is defined as: " + input_string_1);
        System.out.println("The second string is defined as: " + input_string_2);
        System.out.println("String to be inserted at index: " + index);
        System.out.println("The result is: ");
        String result = new String();
        for (int i = 0; i < input_string_1.length(); i++) {
            result += input_string_1.charAt(i);
            if (i == index) {
                result += input_string_2;
            }
        }
        System.out.println(result);
    }
}

เอาต์พุท

The first string is defined as: Java Program
The second string is defined as: Learning
String to be inserted at index: 0
The result is: LearningJava Program

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

import java.lang.*;

public class StringInsert {
    public static void insertString(String input_string_1, String input_string_2, int index) {
        String result = new String();
        for (int i = 0; i < input_string_1.length(); i++) {
            result += input_string_1.charAt(i);
            if (i == index) {
                result += input_string_2;
            }
        }
        System.out.println(result);
    }
    
    public static void main(String[] args) {
        String input_string_1 = " Java Program";
        String input_string_2 = "Learning";
        int index = 0;
        System.out.println("The first string is defined as: " + input_string_1);
        System.out.println("The second string is defined as: " + input_string_2);
        System.out.println("String to be inserted at index: " + index);
        System.out.println("The result is: ");
        insertString(input_string_1, input_string_2, index);
    }
}

เอาต์พุท

The first string is defined as: Java Program
The second string is defined as: Learning
String to be inserted at index: 0
The result is: LearningJava Program
JLearningava Program

⚠️ หมายเหตุสำคัญ: โค้ดตัวอย่างที่ 2 มีบั๊ก - พิมพ์ผลลัพธ์ซ้ำ 2 ครั้ง (ครั้งหนึ่งใน insertString อีกครั้งใน main) และตรรกะแทรกที่ index 0 ทำงานผิดปกติ (เพิ่ม Learning ทั้งหน้าและกลาง)

วิธีที่ดีกว่า (ใช้ StringBuilder):

public static String insertString(String original, String toInsert, int index) {
    if (index < 0 || index > original.length()) {
        throw new IndexOutOfBoundsException("Index: " + index);
    }
    return new StringBuilder(original).insert(index, toInsert).toString();
}

// หรือใช้ substring
public static String insertString(String original, String toInsert, int index) {
    return original.substring(0, index) + toInsert + original.substring(index);
}