보물 발견하기
얼마 전 이해하기 쉽고 재미있는 거대한 인공지능 학습 웹사이트를 발견해서 여러분과 공유하지 않을 수 없었습니다. 트레저 포털입니다.
서문
문자열 연결
1. + 연산자를 사용합니다:
String str1 = "Hello";
String str2 = ", ";
String str3 = "World";
String result = str1 + str2 + str3;
이 방법은 + 연산자를 사용하여 여러 문자열을 연결할 수 있는 가장 간단한 방법입니다. Java는 문자열 연결을 자동으로 처리하고 새 문자열 객체를 생성합니다.
2. concat() 메서드를 사용합니다:
String str1 = "Hello";
String str2 = ", ";
String str3 = "World";
String result = str1.concat(str2).concat(str3);
concat() 메서드는 문자열을 다른 문자열의 끝에 연결하는 데 사용됩니다. concat() 메서드를 연속적으로 호출하여 여러 문자열을 연결할 수 있습니다.
3. 문자열 빌더 클래스를 사용합니다:
문자열 빌더는 문자열을 자주 수정해야 하는 상황에 적합한 변경 가능한 문자열 클래스로, 여러 개의 중간 문자열 객체를 생성하지 않아 성능을 향상시킵니다.
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Hello");
stringBuilder.append(", ");
stringBuilder.append("World");
String result = stringBuilder.toString();
이 경우 먼저 StringBuilder 객체를 생성한 다음 append() 메서드를 사용하여 접합할 문자열을 추가하고 마지막으로 toString() 메서드를 사용하여 StringBuilder를 불변의 문자열로 변환합니다.
4. StringBuffer 클래스를 사용합니다:
StringBuffer 클래스는 StringBuilder 클래스와 유사하지만 스레드에 안전하며 멀티 스레드 환경에 적합합니다.
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("Hello");
stringBuffer.append(", ");
stringBuffer.append("World");
String result = stringBuffer.toString();
문자열 빌더와 마찬가지로 앱드() 메서드를 사용하여 최종 문자열을 빌드한 다음, 토스트링() 메서드를 사용하여 불변 문자열을 가져올 수 있습니다.
5. String.join() 메서드를 사용합니다:
이 방법은 더 간결하며 지정된 구분 기호로 여러 문자열을 연결하는 데 특히 유용합니다.
String.join()
String str1 = "Hello";
String str2 = ", ";
String str3 = "World";
String result = String.join(str2, str1, str3);
문자열 조회
1. indexOf() 메서드를 사용하여 하위 문자열의 위치를 찾습니다:
indexOf() 메서드는 문자열에 다른 하위 문자열이 포함되어 있는지 확인하는 데 사용되며 첫 번째 문자열의 인덱스를 반환합니다. 찾을 수 없으면 -1을 반환합니다.
String mainString = "Hello, World!";
String subString = "World";
int position = mainString.indexOf(subString);
if (position != -1) {
System.out.println("기본 문자열에서 하위 문자열의 위치는 "+ position);
} else {
System.out.println("대체 문자열을 찾을 수 없습니다!");
}
2. lastIndexOf() 메서드를 사용하여 마지막 발생을 찾습니다:
lastIndexOf() 메서드는 indexOf( ) 메서드와 유사하지만 마지막으로 발생한 인덱스를 반환합니다.
String mainString = "Java is a powerful programming language. Java is also fun!";
String subString = "Java";
int position = mainString.lastIndexOf(subString);
if (position != -1) {
System.out.println(" + position);
} else {
System.out.println("대체 문자열을 찾을 수 없습니다!");
}
3. contains() 메서드를 사용하여 문자열에 하위 문자열이 포함되어 있는지 확인합니다:
contains() 메서드는 문자열에 다른 하위 문자열이 포함되어 있는지 확인하는 데 사용되며 부울 값을 반환합니다.
String mainString = "This is a Java example.";
String subString = "Java";
boolean contains = mainString.contains(subString);
if (contains) {
System.out.println("메인 문자열에 하위 문자열이 포함되어 있습니다!");
} else {
System.out.println("주 문자열에 하위 문자열이 포함되어 있지 않습니다!");
}
4. 고급 검색에 정규식을 사용합니다:
Java는 정규식을 사용한 복잡한 문자열 검색도 지원합니다. 패턴 및 일치자 클래스를 사용하여 이 작업을 수행할 수 있습니다. 이를 통해 보다 복잡한 패턴 일치 작업을 수행할 수 있습니다.
import java.util.regex.*;
String text = "The quick brown fox jumps over the lazy dog.";
String pattern = "fox";
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(text);
while (matcher.find()) {
System.out.println("일치하는 문자열 찾기: " + matcher.group());
}
문자열 인터셉션
1. 대체 문자열() 메서드를 사용합니다:
substring() 메서드는 문자열에서 부분 문자열을 가로채는 데 사용되며, 가로채기의 시작 및 끝 위치를 지정할 수 있습니다. 이 메서드에는 시작 위치만 전달하는 방법과 시작 위치와 끝 위치를 모두 전달하는 방법의 두 가지 형태가 있습니다.
String mainString = "Hello, World!";
// 인덱스 2에서 인덱스 5까지의 하위 문자열을 가로챕니다.
String subString1 = mainString.substring(2, 5);
System.out.println("하위 문자열 1 가로채기: " + subString1); // 출력 "llo"
// 인덱스 7에서 문자열 끝까지 인터셉트하기
String subString2 = mainString.substring(7);
System.out.println("하위 문자열 가로채기2: " + subString2); // 출력 "World!"
2. split() 메서드를 사용하여 문자열을 분할합니다:
split() 메서드를 사용하면 특정 구분 기호에 따라 문자열을 하위 문자열로 분할한 다음 원하는 하위 문자열을 선택할 수 있습니다.
String text = "apple,banana,grape";
// 쉼표를 구분 기호로 사용하여 문자열 나누기
String[] fruits = text.split(",");
for (String fruit : fruits) {
System.out.println(" : " + fruit);
}
3. 정규식을 사용한 고급 차단:
Java의 정규식 라이브러리를 사용하면 복잡한 패턴을 기반으로 문자열을 가로챌 수 있습니다.
import java.util.regex.*;
String text = "The quick brown fox jumps over the lazy dog.";
String pattern = "\\b\\w+\\b"; // 일치하는 단어
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(text);
while (matcher.find()) {
System.out.println("일치하는 단어: " + matcher.group());
}
문자열 바꾸기
1. replace() 메서드를 사용합니다:
replace() 메서드는 지정된 문자 또는 하위 문자열을 새 문자 또는 하위 문자열로 바꾸는 데 사용됩니다.
String originalString = "Hello, World!";
String searchString = "World";
String replacementString = "Java";
String modifiedString = originalString.replace(searchString, replacementString);
System.out.println("대체된 문자열: " + modifiedString);
출력.
대체된 문자열: Hello, Java!
2. 정규식 대체를 위해 replaceAll() 메서드를 사용합니다:
replaceAll() 메서드를 사용하면 정규식을 사용하여 보다 유연한 교체 작업을 수행할 수 있습니다.
String originalString = "The quick brown fox jumps over the lazy dog.";
String pattern = "fox";
String replacementString = "cat";
String modifiedString = originalString.replaceAll(pattern, replacementString);
System.out.println("대체된 문자열: " + modifiedString);
출력.
대체된 문자열: The quick brown cat jumps over the lazy dog.
3. 문자열 빌더를 사용하여 바꿉니다:
여러 개의 치환이 필요하거나 고성능이 요구되는 경우 StringBuilder 클래스를 사용할 수 있습니다.
StringBuilder stringBuilder = new StringBuilder("Java is easy. Java is fun.");
String searchString = "Java";
String replacementString = "Python";
int index = stringBuilder.indexOf(searchString);
while (index != -1) {
stringBuilder.replace(index, index + searchString.length(), replacementString);
index = stringBuilder.indexOf(searchString);
}
String modifiedString = stringBuilder.toString();
System.out.println("대체된 문자열: " + modifiedString);
출력.
대체된 문자열: Python is easy. Python is fun.
문자열 분할
1. split() 메서드를 사용합니다:
split() 메서드는 Java에서 가장 일반적으로 사용되는 문자열 분할 메서드입니다. 이 메서드는 지정된 정규식을 구분 기호로 사용하여 문자열을 문자열 배열로 분할합니다.
String inputString = "apple,orange,banana,grape";
String[] fruits = inputString.split(",");
System.out.println("과일 분할:");
for (String fruit : fruits) {
System.out.println(fruit);
}
출력:
과일을 분할합니다:
apple
orange
banana
grape
2. StringTokenizer 클래스를 사용합니다:
StringTokenizer 클래스는 Java에서 문자열 분할을 수행하는 또 다른 방법으로, 지정된 구분 기호를 사용하여 문자열을 토큰으로 분할합니다.
String inputString = "Java is a powerful programming language";
StringTokenizer tokenizer = new StringTokenizer(inputString);
System.out.println("단어 분할: ");
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
출력:
단어를 분할합니다:
Java
is
a
powerful
programming
language
3. 정규식 사용:
정규식을 구분 기호로 사용하여 보다 유연하게 문자열을 분할할 수도 있습니다.
String inputString = "Java123is456a789powerful";
String[] parts = inputString.split("\\d+");
System.out.println("분할된 섹션: ");
for (String part : parts) {
System.out.println(part);
}
출력:
분할된 섹션:
Java
is
a
powerful
4. 아파치 커먼즈 랭 라이브러리를 사용합니다:
아파치 커먼즈 랭 라이브러리는 문자열 분할을 쉽게 처리할 수 있는 편리한 split() 메서드가 있는 StringUtils 클래스를 제공합니다.
import org.apache.commons.lang3.StringUtils;
String inputString = "Java;C;C++;Python";
String[] languages = StringUtils.split(inputString, ';');
System.out.println("분할 후 프로그래밍 언어:");
for (String language : languages) {
System.out.println(language);
}
출력:
프로그래밍 언어 분할:
Java
C
C++
Python
문자열 비교
1. 콘텐츠 비교에는 equals() 메서드를 사용합니다:
equals() 메서드는 두 문자열의 내용을 비교하여 동일한지 확인하는 데 사용됩니다. 이 메서드는 참조가 동일한지 여부뿐만 아니라 문자열의 각 문자를 비교합니다.
String str1 = "Hello";
String str2 = "World";
String str3 = "Hello";
boolean isEqual1 = str1.equals(str2); // false를 반환합니다.
boolean isEqual2 = str1.equals(str3); // 참을 반환합니다.
System.out.println("str1 와 str2는 "+ isEqual1);
System.out.println("str1 과 str3은 "+ isEqual2);
2. 대소문자를 무시하는 콘텐츠 비교를 위해 equalsIgnoreCase() 메서드를 사용합니다:
equalsIgnoreCase() 메서드는 equals() 메서드와 비슷하지만 문자열의 대/소문자를 무시합니다.
String str1 = "Hello";
String str2 = "hello";
boolean isEqualIgnoreCase = str1.equalsIgnoreCase(str2); // 참을 반환합니다.
System.out.println("str1 와 str2는 "+ isEqualIgnoreCase);
3. 비교 대상() 메서드를 사용하여 사전을 순서대로 비교합니다:
compareTo() 메서드는 두 문자열의 사전 순서를 비교하는 데 사용됩니다. 이 메서드는 두 문자열의 비교 결과를 나타내는 정수를 반환합니다.
String str1 = "apple";
String str2 = "banana";
String str3 = "cherry";
int result1 = str1.compareTo(str2); // 음수를 반환합니다.
int result2 = str2.compareTo(str1); // 양수를 반환합니다.
int result3 = str1.compareTo(str3); // 음수를 반환합니다.
System.out.println("str1 str2와 비교: "+ result1);
System.out.println("str2 str1과 비교: "+ result2);
System.out.println("str1 str3와 비교: "+ result3);
4. startsWith() 및 endsWith() 메서드를 사용하여 접두사 및 접미사를 확인합니다:
startsWith() 메서드는 문자열이 지정된 접두사로 시작하는지 확인하는 데 사용되며, endsWith( ) 메서드는 문자열이 지정된 접미사로 끝나는지 확인하는 데 사용됩니다.
String str = "Hello, World";
boolean startsWithHello = str.startsWith("Hello"); // 참을 반환합니다.
boolean endsWithWorld = str.endsWith("World"); // false를 반환합니다.
System.out.println("문자열이 Hello: "+ startsWithHello);
System.out.println("문자열이 World로 끝나는지 여부: "+ endsWithWorld);
5. 대소문자를 구분하지 않는 사전 순서 비교를 위해 compareToIgnoreCase() 메서드를 사용합니다:
비교대소문자 무시() 메서드는 비교대소문자( )와 비슷하지만 문자열의 대소문자를 무시합니다.
String str1 = "apple";
String str2 = "Banana";
int result = str1.compareToIgnoreCase(str2); // 양수를 반환합니다.
System.out.println("str1 str2와 비교: "+ result);
문자열 서식
1. String.format() 사용
String.format() 메서드를 사용하면 C의 printf() 함수와 유사하게 형식이 지정된 문자열을 만들 수 있습니다. 이 함수는 자리 표시자를 사용하여 삽입할 데이터와 그 형식을 지정합니다. 플레이스홀더는 퍼센트 기호와 삽입할 데이터 유형을 나타내는 문자로 구성됩니다. 다음은 몇 가지 일반적인 플레이스홀더와 그 용도입니다:
- 요약
- %s : 문자열.
- %d : 정수.
- %f 부동 소수점 숫자.
예시:
String name = "Alice";
int age = 30;
double salary = 50000.50;
String formattedString = String.format("Name: %s, Age: %d, Salary: %.2f", name, age, salary);
System.out.println(formattedString);
출력:
Name: Alice, Age: 30, Salary: 50000.50
위의 예에서 %s, %d 및 %.2f 자리 표시자는 문자열, 정수 및 부동 소수점을 삽입하는 데 사용되며, 부동 소수점은 소수점 이하 두 자리까지 유지하도록 지정됩니다.
2. printf() 사용
printf() 메서드는 형식이 지정된 문자열을 콘솔에 출력하는 데 사용되는 System.out 객체의 메서드입니다. String.format() 과 마찬가지로 동일한 자리 표시자를 사용하여 출력 서식을 지정합니다.
예시:
String name = "Bob";
int age = 25;
double height = 1.75;
System.out.printf("Name: %s, Age: %d, Height: %.2f%n", name, age, height);
출력:
Name: Bob, Age: 25, Height: 1.75
문자열 공백 처리
1. 공백을 삭제합니다:
- 문자열 클래스의 trim() 메서드를 사용하여 문자열 앞뒤의 공백을 제거할 수 있습니다.
- trim()은 선행 및 후행 공백이 제거된 새 문자열을 반환합니다.
String text = " This is a text with spaces ";
String trimmedText = text.trim();
System.out.println(trimmedText); // : "This is a text with spaces"
2. 띄어쓰기 교체:
- 문자열 클래스의 replace() 메서드를 사용하여 문자열의 공백을 대체할 수 있습니다.
- 공백을 다른 문자나 문자열로 바꿀 수 있습니다.
String text = "Hello, World!";
String replacedText = text.replace(" ", "_");
System.out.println(replacedText); // : "Hello,_World!"
3. 문자열을 분할합니다:
- split() 메서드를 사용하여 문자열을 문자열 배열로 분할합니다.
- 기본적으로 split() 은 공백을 구분 기호로 사용하지만 사용자 지정 구분 기호를 지정할 수 있습니다.
String sentence = "This is a sample sentence";
String[] words = sentence.split(" "); // 공백을 사용하여 단어 배열로 나누기
4. 공백을 확인합니다:
- 문자열에 공백이 포함되어 있는지 확인하려면 contains() 메서드를 사용합니다.
String text = "This has spaces";
boolean hasSpaces = text.contains(" "); // 참을 반환합니다.
5. 공백 개수를 세어봅니다:
- 루프를 사용하여 문자열을 가로지르며 공백의 개수를 계산합니다.
String text = "Count the spaces in this text";
int spaceCount = 0;
for (char c : text.toCharArray()) {
if (c == ' ') {
spaceCount++;
}
}
System.out.println("공백 수: "+ spaceCount); // : "공백 수: 5"
6. 여러 개의 연속된 공백을 바꿉니다:
- 정규식을 사용하여 여러 개의 연속된 공백을 하나의 공백으로 바꾸세요.
String text = "Replace multiple spaces with one.";
String replacedText = text.replaceAll("\\s+", " ");
System.out.println(replacedText); // : "Replace multiple spaces with one."
7. 탭 및 줄 바꿈 처리:
- 공백 문자에는 공백뿐만 아니라 탭, 줄 바꿈 등도 포함됩니다.
- 공백을 처리할 때와 마찬가지로 replaceAll() 을 사용하여 처리할 수 있습니다.
String textWithTabs = "This\tis\ta\ttab\tseparated\ttext";
String textWithNewlines = "This
is
a
newline
separated
text";




