📋 목차
- 기본 정보 함수
- 문자 접근 함수
- 검색 함수
- 부분 문자열 함수
- 변환 함수
- 비교 함수
- 분할/결합 함수
- 문자열 수정 함수
- 정규식 함수
- 실전 활용 패턴
기본 정보 함수
length() - 문자열 길이
String str = "Hello";
int len = str.length();
if (str.length() == 0) {
return "empty";
}
isEmpty() - 빈 문자열 확인
String str = "";
boolean empty = str.isEmpty();
str.length() == 0;
문자 접근 함수
charAt(int index) - 특정 위치 문자 반환
String str = "Hello";
char first = str.charAt(0);
char last = str.charAt(str.length() - 1);
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
}
toCharArray() - 문자 배열로 변환
String str = "Hello";
char[] chars = str.toCharArray();
for (char c : str.toCharArray()) {
System.out.println(c);
}
검색 함수
indexOf() - 문자/문자열 위치 찾기
String str = "Hello World";
int pos1 = str.indexOf('o');
int pos2 = str.indexOf("World");
int pos3 = str.indexOf('o', 5);
int notFound = str.indexOf('x');
if (str.indexOf("target") != -1) {
}
lastIndexOf() - 마지막 위치 찾기
String str = "Hello World";
int lastO = str.lastIndexOf('o');
contains() - 문자열 포함 여부
String str = "Hello World";
boolean hasWorld = str.contains("World");
boolean hasJava = str.contains("Java");
if (str.contains("target")) {
}
부분 문자열 함수
substring() - 부분 문자열 추출
String str = "Hello World";
String sub1 = str.substring(6);
String sub2 = str.substring(0, 5);
String left = str.substring(0, mid);
String right = str.substring(mid);
변환 함수
toLowerCase() / toUpperCase() - 대소문자 변환
String str = "Hello World";
String lower = str.toLowerCase();
String upper = str.toUpperCase();
if (str1.toLowerCase().equals(str2.toLowerCase())) {
}
trim() - 공백 제거
String str = " Hello World ";
String trimmed = str.trim();
String input = scanner.nextLine().trim();
valueOf() - 다른 타입을 문자열로 변환
int num = 123;
char c = 'A';
String str1 = String.valueOf(num);
String str2 = String.valueOf(c);
String result = String.valueOf(answer);
비교 함수
equals() - 문자열 동등 비교
String str1 = "Hello";
String str2 = "Hello";
boolean same = str1.equals(str2);
equalsIgnoreCase() - 대소문자 무시 비교
String str1 = "Hello";
String str2 = "HELLO";
boolean same = str1.equalsIgnoreCase(str2);
compareTo() - 사전순 비교
String str1 = "apple";
String str2 = "banana";
int result = str1.compareTo(str2);
Arrays.sort(strings);
startsWith() / endsWith() - 시작/끝 문자열 확인
String str = "Hello World";
boolean starts = str.startsWith("Hello");
boolean ends = str.endsWith("World");
if (word.startsWith(prefix)) {
}
분할/결합 함수
split() - 문자열 분할
String str = "apple,banana,cherry";
String[] fruits = str.split(",");
String input = "1 2 3 4 5";
String[] numbers = input.split(" ");
String data = "a1b2c3";
String[] parts = data.split("\\d");
join() - 문자열 결합 (Java 8+)
String[] words = {"Hello", "World", "Java"};
String joined = String.join(" ", words);
String csv = String.join(",", words);
List<String> list = Arrays.asList("a", "b", "c");
String result = String.join("-", list);
문자열 수정 함수
replace() - 문자/문자열 교체
String str = "Hello World";
String replaced1 = str.replace('o', 'a');
String replaced2 = str.replace("World", "Java");
String cleaned = str.replace("target", "");
replaceAll() - 정규식으로 교체
String str = "Hello123World456";
String onlyLetters = str.replaceAll("\\d", "");
String onlyNumbers = str.replaceAll("[^\\d]", "");
String normalized = str.replaceAll("\\s+", " ");
replaceFirst() - 첫 번째만 교체
String str = "apple apple apple";
String result = str.replaceFirst("apple", "orange");
정규식 함수
matches() - 정규식 패턴 매칭
String str = "12345";
boolean isNumber = str.matches("\\d+");
boolean isEmail = email.matches(".+@.+\\..+");
if (input.matches("[0-9]+")) {
}
실전 활용 패턴
🔥 문자열 뒤집기
String str = "Hello";
String reversed = new StringBuilder(str).reverse().toString();
StringBuilder sb = new StringBuilder();
for (int i = str.length() - 1; i >= 0; i--) {
sb.append(str.charAt(i));
}
String reversed = sb.toString();
🔥 팰린드롬 확인
public boolean isPalindrome(String str) {
String cleaned = str.toLowerCase().replaceAll("[^a-z0-9]", "");
return cleaned.equals(new StringBuilder(cleaned).reverse().toString());
}
🔥 문자 개수 세기
public int countChar(String str, char target) {
int count = 0;
for (char c : str.toCharArray()) {
if (c == target) count++;
}
return count;
}
public int countChar(String str, char target) {
return str.length() - str.replace(String.valueOf(target), "").length();
}
🔥 아나그램 확인
public boolean isAnagram(String s1, String s2) {
if (s1.length() != s2.length()) return false;
char[] chars1 = s1.toCharArray();
char[] chars2 = s2.toCharArray();
Arrays.sort(chars1);
Arrays.sort(chars2);
return Arrays.equals(chars1, chars2);
}
🔥 문자열을 숫자로 변환
String numStr = "123";
int num = Integer.parseInt(numStr);
try {
int num = Integer.parseInt(input);
} catch (NumberFormatException e) {
}
char c = '5';
int digit = c - '0';
💡 성능 팁
StringBuilder vs String 연결
String result = "";
for (int i = 0; i < 1000; i++) {
result += "a";
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append("a");
}
String result = sb.toString();
문자열 비교 최적화
if (str1.length() != str2.length()) {
return false;
}
if (str1 == null || str2 == null) {
return str1 == str2;
}
📝 외우면 좋은 핵심 함수들
str.length()
str.charAt(i)
str.substring(start, end)
str.indexOf(target)
str.contains(target)
str.split(delimiter)
str.replace(old, new)
str.trim()
str.toLowerCase()
str.equals(other)
String.valueOf(obj)
Integer.parseInt(str)