บทนำ
ในบทความนี้ เราจะเรียนรู้วิธีการแทรกสตริง (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);
}