이 글에서는 한 문자열을 다른 문자열의 특정 위치에 삽입하는 방법을 자세히 알아보겠습니다. 문자열(String)은 하나 이상의 문자로 구성되며 큰따옴표(" ")로 묶어 표현하는 데이터 타입입니다.
아래 예시를 통해 삽입 과정을 살펴보겠습니다.
입력 및 출력 예시
입력값 −
첫 번째 문자열: Java Program 두 번째 문자열: Learning 삽입할 인덱스 위치: 0
기대 출력 결과 −
결과: LearningJava Program
알고리즘
Step 1 - 시작 Step 2 - 두 개의 문자열(input_string_1, input_string_2)과 결과를 저장할 문자열 객체(result)를 선언합니다. Step 3 - 각 변수에 값을 정의합니다. Step 4 - for 반복문으로 첫 번째 문자열을 순회하면서, 'i'번째 위치에서 산술 연산자(+)를 사용해 두 문자열을 연결합니다. Step 5 - 결과를 출력합니다. Step 6 - 종료
예제 1: main 함수에서 모든 로직 처리
이 예제에서는 모든 연산을 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: 객체 지향 방식으로 함수 분리
이 예제에서는 연산 로직을 별도의 함수로 캡슐화하여 객체 지향 프로그래밍 스타일로 구현합니다.
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
핵심 포인트 정리
이 프로그램의 핵심 원리는 다음과 같습니다.
① charAt(i) 메서드로 첫 번째 문자열의 각 문자를 하나씩 순회하며 결과 문자열에 추가하고, ② 현재 인덱스가 목표 삽입 위치와 일치할 때 두 번째 문자열을 덧붙입니다. 이렇게 하면 원하는 위치에 자연스럽게 새 문자열이 삽입됩니다.
참고로 실무에서는 문자열 연결 시 StringBuilder나 StringBuffer를 사용하는 것이 성능 면에서 더 효율적입니다. + 연산자로 문자열을 반복해서 연결하면 매번 새로운 문자열 객체가 생성되어 메모리 낭비가 발생할 수 있기 때문입니다.