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

วิธีแทรกสตริงไว้หน้าสตริงอีกตัวใน Java

วิธีที่ 1: ใช้ Character Array

สร้าง char array ขนาดรวมความยาวทั้งสองสตริง แล้ว copy ตัวอักษรทีละตัว

ตัวอย่าง


import java.util.Scanner;

public class PrependStringArray {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter string1 (target): ");
        String str1 = sc.next();
        System.out.println("Enter string2 (to prepend): ");
        String str2 = sc.next();
        
        char[] charArray = new char[str1.length() + str2.length()];
        
        // copy str2 ก่อน
        for (int i = 0; i < str2.length(); i++) {
            charArray[i] = str2.charAt(i);
        }
        // copy str1 ต่อท้าย
        for (int i = str2.length(); i < charArray.length; i++) {
            charArray[i] = str1.charAt(i - str2.length());
        }
        
        String result = new String(charArray);
        System.out.println(result);
    }
}

ผลลัพธ์


Enter string1: krishna
Enter string2: kasyap
kasyapkrishna

วิธีที่ 2: ใช้ StringBuffer (แนะนำ - เรียบง่าย)

StringBuffer mutable thread-safe เหมาะสำหรับการ modify string หลายครั้ง

ตัวอย่าง


import java.util.Scanner;

public class PrependStringBuffer {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter string1: ");
        String str1 = sc.next();
        System.out.println("Enter string2: ");
        String str2 = sc.next();
        
        StringBuffer sb = new StringBuffer();
        sb.append(str2); // prepend
        sb.append(str1);
        
        String result = sb.toString();
        System.out.println(result);
    }
}

ผลลัพธ์


Enter string1: krishna
Enter string2: kasyap
kasyapkrishna

วิธีที่ 3: ใช้ StringBuilder (เร็วกว่า - Non-thread-safe)

เหมือน StringBuffer แต่ไม่ synchronized ใช้ใน single-threaded environment


StringBuilder sb = new StringBuilder();
sb.append(str2).append(str1);
String result = sb.toString();

วิธีที่ 4: String Concatenation (ง่ายที่สุด)


String result = str2 + str1; // หรือ str2.concat(str1)

การเปรียบเทียบประสิทธิภาพ

วิธีPerformanceThread-Safeเหมาะสำหรับ
str2 + str1ดี (compile-time optimization)N/Aครั้งเดียว/ไม่บ่อย
StringBuilderดีที่สุดไม่Loop, หลายครั้ง, single-thread
StringBufferดีใช่Multi-thread, legacy code
char array manualควบคุม memory ได้เต็มที่N/ALow-level, performance critical

ข้อควรระวัง

  • String ใน Java immutable - str1 + str2 สร้าง object ใหม่ทุกครั้ง
  • ใน loop ต้องใช้ StringBuilder/StringBuffer เท่านั้น
  • Java 9+ มี String.join(), String.repeat() ช่วยบางกรณี