문자열 연산하기(삽입, 수정, 삭제, 비교)

문자열 삽입

public class Insert {
	public static void main(String[] args) {
		String str = "hello";
		String ch = "world";
		int k = 3;
		String insertStr = insertString(str, ch, k);
		System.out.println(insertStr);
	}
	static String insertString(String str, String ch, int k) {
		StringBuilder sb = new StringBuilder(str);
		sb.insert(k, ch);
		return sb.toString();
	}
}

원본 str 문자열에서 k번째 인덱스에 ch 문자열을 삽입합니다.

 

문자열 수정

public class Modify {
	public static void main(String[] args) {
		String str = "hello world";
		int k = 3;
		char ch = 'h';
		String modifyStr = modifyString(str, ch, k);
		System.out.println(modifyStr);
	}
	
	static String modifyString(String str, char ch, int k) {
		return str.substring(0, k) + ch + str.substring(k+1);
	}
}

원본 str 문자열에서 k번째 인덱스에 있는 문자를 ch로 교체합니다.

 

문자열 삭제

public class Delete {
	public static void main(String[] args) {
		char[] s = "hello world".toCharArray();
		removeChar(s,'l');
		System.out.println(new String(s));
	}
	static void removeChar(char[] s, char c) {
		int j = 0;
		
		for(int i = 0; i < s.length; i++) {
			if(s[i] != c) {
				s[j++] = s[i];
			}
		}
		
		while (j < s.length) {
            s[j++] = '\0';
        }
	}
}

removeChar에서 문자 배열과 제거하려는 문자를 매개변수로 받습니다.

새 위치 인덱스 j를 0으로 초기화하여 배열 s를 반복하면서 각 문자가 제거 대상 문자인 c와 다른 경우에만 s[j]에 문자를 넣고 j를 증가시킵니다. 이렇게 하면 배열의 시작 부분부터 c를 제외한 모든 문자가 순서대로 복사되며, c 문자는 배열에서 제거됩니다. 반복이 끝난 후, 지정된 문자 c를 제거한 결과 남은 배열의 남은 부분을 널 문자('\0')로 채웁니다. 이는 j 인덱스부터 배열의 끝까지 진행됩니다. 

 

문자열 비교

public class StringComparator {

	public static void main(String[] args) {
		String string1 = new String("hello wolrd");
		String string2 = new String("hello wolrdd");
		String string3 = new String("hellowolrd");
		String string4 = new String("hello volrd");
		String string5 = new String("hello wolrd");
		System.out.println(stringCompare(string1, string2));
		System.out.println(stringCompare(string1, string3));
		System.out.println(stringCompare(string1, string4));
		System.out.println(stringCompare(string1, string5));

	}
	static Boolean stringCompare(String str1, String str2) {
		int l1 = str1.length();
		int l2 = str2.length();
		
		if(l1 != l2) return false;
		
		for(int i = 0; i < l1; i++) {
			int str1_ch = str1.charAt(i);
			int str2_ch = str2.charAt(i);
			
			if(str1_ch != str2_ch) {
				return false;
			}
		}
		return true;
	}
}

두 문자열을 매개변수로 받습니다.

길이가 다르면 같지 않기 때문에 false를 반환합니다. 길이가 같을때 문자열의 내용을 한 글자씩 반복문에서 아스키 코드 값으로 변환 후 이용하여 비교합니다.