서핑하는 블루베리
Java 문자열 활용 총정리 본문

1. StringBuilder를 이용한 문자열 조작
StringBuilder는 문자열을 자주 변경할 때 효율적이며, 불필요한 객체 생성을 줄여줍니다.
// 1. StringBuilder 기본 사용 예제
StringBuilder sb = new StringBuilder(); // 빈 StringBuilder 객체 생성
// 1-1. 문자열 추가
sb.append("Hello");
sb.append(" ");
sb.append("World");
System.out.println(sb.toString()); // 출력: Hello World
// 1-2. 문자열 삽입
sb.insert(5, ",");
System.out.println(sb.toString()); // 출력: Hello, World
// 1-3. 문자열 삭제
sb.delete(5, 6); // 인덱스 5부터 6 미만까지의 문자 삭제 (',' 삭제)
System.out.println(sb.toString()); // 출력: Hello World
// 1-4. 문자열 변경
sb.replace(6, 11, "Java");
System.out.println(sb.toString()); // 출력: Hello Java2. 숫자와 문자열 간의 변환
숫자를 문자열로, 또는 문자열을 숫자로 변환할 때는 각각 Integer.toString()과 Integer.parseInt()를 사용합니다.
// 2. 숫자와 문자열 간의 변환
// 숫자 -> 문자열 변환
String numStr = Integer.toString(1234);
System.out.println(numStr); // 출력: 1234
// 문자열 -> 숫자 변환
int num = Integer.parseInt("1234");
System.out.println(num); // 출력: 12343. 문자열 자르기
문자열을 특정 구분자로 분리하거나, 문자 단위로 자를 때 유용한 메서드입니다.
// 3. 문자열 자르기
String a = "jang";
// a를 문자 단위로 분리하여 배열에 저장: {"j", "a", "n", "g"}
String[] sArr = a.split("");
// a를 char 배열로 변환
char[] cArr = a.toCharArray();
// String[] 배열을 다시 하나의 문자열로 합치기
String joined = String.join("", sArr);
System.out.println(joined); // 출력: jang
4. 문자열 뒤집기
문자열의 순서를 뒤집고 싶을 때는 StringBuilder의 reverse() 메서드를 사용합니다.
// 4. 문자열 뒤집기 예제 (별도의 StringBuilder 사용)
StringBuilder sb2 = new StringBuilder();
sb2.append(a); // 문자열 "jang" 추가
sb2.reverse(); // 문자열 뒤집기 -> "gnaj"
System.out.println(sb2.toString()); // 출력: gnaj5. 대소문자 변환
문자열의 대소문자를 변환할 때는 toUpperCase()와 toLowerCase()를 사용합니다.
// 5. 문자 대소문자 변환
System.out.println(a.toUpperCase()); // 출력: JANG (대문자)
System.out.println(a.toLowerCase()); // 출력: jang (소문자)6. 앞뒤 공백 제거
trim() 메서드는 문자열의 앞뒤에 있는 불필요한 공백을 제거합니다.
// 6. 앞뒤 공백 제거 (trim)
String b = " hello world ";
System.out.println(b.trim()); // 출력: "hello world"
7. 문자열 길이 확인
// 7. 문자열 길이
System.out.println(a.length()); // 출력: 48. 앞글자만 대문자로 만들기
// 8. 앞글자만 대문자로 만들기
// 첫번째 글자 추출
String firstLetter = a.substring(0, 1);
// 나머지 글자 추출
String remainLetter = a.substring(1);
// 첫번째 글자 대문자, 나머지 글자 소문자 변환
firstLetter = firstLetter.toUpperCase();
remainLetter = remainLetter.toLowerCase();
// 두 문자열 합치기
String result = firstLetter + remainLetter;
System.out.println(result); // 출력: Jang9. 특정 문자가 포함되어 있는지 확인하기
문자열에 특정 문자열이나 문자가 포함되어 있는지 확인할 때는 contains() 메서드를 사용합니다.
// 9. 문자열에 특정 문자가 포함되어 있는지 확인하기
String text = "myeong ji";
boolean containsMy = text.contains("my"); // 대소문자 구분
System.out.println(containsMy); // 출력: true10. 문자열 치환
특정 문자열이나 문자를 다른 문자열로 치환할 때는 replace() 또는 replaceAll() 메서드를 사용합니다.
※ replaceAll()은 정규 표현식을 사용할 수 있다는 점이 다릅니다.
// 10. 문자열 치환
String c = "무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세 ";
// replace : 기존 문자열을 다른 문자열로 치환 (정규식 미사용)
String replaced = c.replace("대한", "민국");
System.out.println(replaced);
// 출력: 무궁화 삼천리 화려강산 민국사람 민국으로 길이 보전하세
// replaceAll : 정규식을 사용한 치환
String replacedAll = c.replaceAll("대한", "민국");
System.out.println(replacedAll);
// 출력: 무궁화 삼천리 화려강산 민국사람 민국으로 길이 보전하세11. charAt을 통한 개별 문자 접근
문자열에서 특정 인덱스의 문자를 가져오거나 순회할 때는 charAt() 메서드를 사용합니다.
// 11. charAt : 문자열에서 문자 가져오기
String s = "abcde";
for (int i = 0; i < s.length(); i++) {
System.out.println(s.charAt(i));
}
// 출력:
// a
// b
// c
// d
// e
추가 팁 및 주의사항
- 시간 복잡도 고려:
- 코딩 테스트에서는 문자열을 다루는 알고리즘의 시간 복잡도도 중요한 평가 요소입니다.
예를 들어, 반복문 내에서 substring()을 과도하게 호출하면 성능에 영향을 줄 수 있으므로 주의하세요.
- 코딩 테스트에서는 문자열을 다루는 알고리즘의 시간 복잡도도 중요한 평가 요소입니다.
- 예외 처리:
- 인덱스 범위를 벗어나는 경우(substring, charAt 등) IndexOutOfBoundsException이 발생할 수 있으므로 입력값에 따라 예외 처리를 고려해야 합니다.
- 문자열 변환 주의:
- 숫자로 변환할 때 입력 문자열이 올바른지 확인하고, 오버플로우에 주의하세요. (예: Integer.parseInt() 대신 Long.parseLong()이나, 문자열 비교를 활용하는 방법도 있음)