
1. String 메소드
- length(): 문자열의 길이를 반환하는 메서드 - int
String text = "Hello, World!";
int length = text.length();
System.out.println(length);// 출력: 13
- toLowerCase(): 문자열을 소문자로 변환하는 메서드
String text = "Hello, World!";
String lowerText = text.toLowerCase();
System.out.println(lowerText);// 출력: hello, world!
- toUpperCase(): 문자열을 대문자로 변환하는 메서드
String text = "Hello, World!";
String upperText = text.toUpperCase();
System.out.println(upperText);// 출력: HELLO, WORLD!
- trim(): 문자열의 앞뒤에 있는 공백을 제거하는 메서드
String text = " Hello, World! ";
String trimmedText = text.trim();
System.out.println(trimmedText);// 출력: Hello, World!
- split(): 문자열을 특정 구분자를 기준으로 나누어 배열로 반환하는 메서드
String text = "apple,banana,orange";
String[] fruits = text.split(",");
for (String fruit : fruits) {
System.out.println(fruit);
}
// 출력:// apple// banana// orange
- replace(): 문자열 내의 특정 부분 문자열을 다른 문자열로 대체하는 메서드
String text = "Hello, World!";
String newText = text.replace("World", "Java");
System.out.println(newText);// 출력: Hello, Java!
- startsWith(): 문자열이 특정 문자열로 시작하는지 여부를 확인하는 메서드 - boolean
String text = "Hello, World!";
boolean startsWithHello = text.startsWith("Hello");
System.out.println(startsWithHello);// 출력: true
- endsWith(): 문자열이 특정 문자열로 끝나는지 여부를 확인하는 메서드 - boolean
String text = "Hello, World!";
boolean endsWithExclamation = text.endsWith("!");
System.out.println(endsWithExclamation);// 출력: false
- charAt(): 문자열에서 특정 인덱스에 위치한 문자를 반환하는 메서드 - char
String text = "Hello, World!";
char character = text.charAt(4);
System.out.println(character);// 출력: o
- indexOf(): 문자열에서 특정 부분 문자열의 첫 번째 등장 위치를 반환하는 메서드 - int
String text = "Hello, World!";
int index = text.indexOf("World");
System.out.println(index);// 출력: 7
- substring(): 문자열에서 특정 범위의 부분 문자열을 반환하는 메서드
String text = "Hello, World!";
String substring = text.substring(7, 12);
System.out.println(substring);// 출력: World
- concat(): 두 개의 문자열을 연결하는 메서드
String text1 = "Hello";
String text2 = "World!";
String concatenatedText = text1.concat(" ").concat(text2);
System.out.println(concatenatedText);// 출력: Hello World!
- isEmpty(): 문자열이 비어있는지 여부를 확인하는 메서드 - boolean
String text = "";
boolean isEmpty = text.isEmpty();
System.out.println(isEmpty);// 출력: true
- equals(): 두 개의 문자열이 동일한지 비교하는 메서드 - boolean
String text1 = "Hello";
String text2 = "Hello";
boolean isEqual = text1.equals(text2);
System.out.println(isEqual);// 출력: true
- contains(): 문자열이 특정 부분 문자열을 포함하는지 여부를 확인하는 메서드 - boolean
String text = "Hello, World!";
boolean containsHello = text.contains("Hello");
System.out.println(containsHello);// 출력: true
빈 칸도 자리 자치
2. 파싱이란? - 구문분석. 번역?
주어진 데이터를 해석하고 원하는 형식으로 변환하는 과정. 일반적으로 문자열을 다른 데이터 타입으로 변환하거나, 구조화된 데이터에서 원하는 정보를 추출하는 등의 작업에 사용
문자열 파싱을 수행하는 일부 기법과 메서드
- Integer.parseInt(String): 문자열을 정수로 파싱
String str = "123";
int number = Integer.parseInt(str);
System.out.println(number);// 출력: 123
- Double.parseDouble(String): 문자열을 실수로 파싱
String str = "3.14";
double number = Double.parseDouble(str);
System.out.println(number);// 출력: 3.14
- SimpleDateFormat.parse(String): 지정된 형식의 날짜 문자열을 Date 객체로 파싱
String str = "2021-09-10";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(str);
System.out.println(date);// 출력: Fri Sep 10 00:00:00 GMT 2021
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import 해야함 > 해당 줄에 가서 alt + enter... 한번에 하는 방법은 없나?


- StringTokenizer 클래스: 문자열을 구분자(delimiter)를 기준으로 분리하여 토큰(token)으로 파싱
String str = "apple,banana,grape";
StringTokenizer tokenizer = new StringTokenizer(str, ",");
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
System.out.println(token);
}
// 출력:// apple// banana// grape

토큰 : 문자열을 작은 조각으로 나누는 단위
* 쉼표(,)를 구분자로 사용하여 토큰으로 분리한다면 "apple", "banana", "grape"라는
세 개의 토큰이 생성
* 토큰은 문자열 처리에서 유용하게 사용되며, 데이터를 분석하거나 필요한 정보를
추출 하는 등 다양한 상황에서 활용
- 정규 표현식(Regular Expression): 문자열을 특정 패턴에 맞게 파싱 Pattern과 Matcher 클래스를 사용하여 정규 표현식을 처리할 수 있다.
String str = "Hello, 2021! It's a great year.";
Pattern pattern = Pattern.compile("\\d+");// 숫자에 대한 정규 표현식 패턴
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
String number = matcher.group();
System.out.println(number);
}
// 출력:// 2021

정규표현식이란?

Pattern pattern2 = Pattern.compile("\\d{3}-\\d{4}-\\d{4}");
- split() 메서드는 문자열을 특정 구분자(delimiter)를 기준으로 분리하여 문자열 배열로 반환하는 기능 - split = 메서드를 쪼개는 역할
String str = "apple,banana,grape";
String[] fruits = str.split(",");
for (String fruit : fruits) {
System.out.println(fruit);
}
// 출력:
// apple
// banana
// grape
파싱이 제대로 됐다 : 그 언어의 오브젝트로 바뀌면 됐다.
3. 딜리미터와 토큰의 차이
딜리미터(Delimiter)는 데이터를 구분하는 역할.
예를 들어, "사과,바나나,오렌지"라는 문자열이 있다면 쉼표(,)가 딜리미터.
이를 기준으로 문자열을 구분하여 "사과", "바나나", "오렌지"로 나눌 수 있다.
토큰(Token)은 딜리미터를 기준으로 분리된 데이터의 작은 단위를 의미.
위의 예시에서 "사과", "바나나", "오렌지"는 각각 토큰이 된다.
이렇게 토큰은 독립적인 의미를 가지고 있을 수 있다.
간단히 말하면, 딜리미터는 데이터를 구분하는 역할을 하고,
토큰은 딜리미터를 기준으로 분리된 의미 있는 작은 단위.
4. String 숙제
문제 1)
package ex08.example;
public class StringEx01 {
public static String encoding(String data) {
return "";
}
public static String decoding(String encodingData) {
return "";
}
public static void main(String[] args) {
String data = "AABBBCCCCDDDDD"; // Byte -> 14Byte
// 인코딩 A2B3C4D5
// 디코딩 AABBBCCCCDDDDD
}
}
답
package ex08.example;
public class StringEx01 {
public static String encoding(String data) {
int num = 1;
String result = "";
String[] arr = data.split("");
for(int i = 1; i<data.length(); i++){
if(!arr[i-1].equals(arr[i])){
result = result + arr[i-1] + num;
num = 1;
continue;
}
num++;
}
return result;
}
public static String decoding(String convert) {
String result = "";
String[] arr = convert.split("");
for(int i = 1; i<convert.length(); i++){
String s = arr[i-1];
int num = Integer.parseInt(arr[i]);
for (int j = 0; j < num; j++) {
result += s;
}
i++;
}
return result;
}
public static void main(String[] args) {
String data = "AABBBCCCCDDDDD"; // Byte -> 14Byte
String convert = "A2B3C4D5"; //Byte -> 8Byte
// 인코딩 A2B3C4D5
data += ".";
System.out.println(encoding(data));
// 디코딩 AABBBCCCCDDDDD
System.out.println(decoding(convert));
}
}
문제 2)
package ex08.example;
public class StringEx02 {
public static void main(String[] args) {
// 문서
// ? 뒤를 쿼리스트링이라고 한다.
// 쿼리스트링은 키=값 형태의 데이터의 집합이다.
// 키=값이 여러개일때는 &로 구분한다.
String url = "http://www.naver.com?username=ssar&password=1234";
// username값과, password값 찾아보기
String username;
String password;
}
}
username(키) = ssar(값)
내 답
int urlLgth = url.length();
System.out.println(urlLgth);
int index = url.indexOf("username");
System.out.println(index);
String urlTokenLength = url.substring(21, 48);
System.out.println(urlTokenLength);
System.out.println();
StringTokenizer token = new StringTokenizer(urlTokenLength, "&");
while (token.hasMoreTokens()) {
String token2 = token.nextToken();
System.out.println(token2);


package ex08.example;
public class StringEx02 {
public static void main(String[] args) {
// 문서
// ? 뒤를 쿼리스트링이라고 한다.
// 쿼리스트링은 키=값 형태의 데이터의 집합이다.
// 키=값이 여러개일때는 &로 구분한다.
String url = "http://www.naver.com?username=ssar&password=1234";
String[] splitUrl = url.split("\\?|&");
// username값과, password값 찾아보기
String username = splitUrl[1].replace("username=", "");
String password = splitUrl[2].replace("password=", "");
System.out.println(username);
System.out.println(password);
}
}
문제 3)
package ex08.example;
class ContractInfo {
private int money;
private final String addr;
private String name;
private String tel;
private String email;
public ContractInfo(int money, String addr, String name, String tel, String email) {
this.money = money;
this.addr = addr;
this.name = name;
this.tel = tel;
this.email = email;
}
@Override
public String toString() {
return "ContractInfo{" +
"money=" + money +
", addr='" + addr + '\'' +
", name='" + name + '\'' +
", tel='" + tel + '\'' +
", email='" + email + '\'' +
'}';
}
public int getMoney() {
return money;
}
public String getAddr() {
return addr;
}
public String getName() {
return name;
}
public String getTel() {
return tel;
}
public String getEmail() {
return email;
}
}
public class StringEx03 {
public static void main(String[] args) {
// 문서 데이터는 : 으로 구분된다.
// 0 : 계약금
// 1 : 주소
// 2 : 이름
// 3 : 전화번호
// 4 : 이메일
String data = "100:서울분당:이창호:01033338888:hello@nate.com";
String parse[] = data.split(":");
String[] parse = data.split(":"); 무슨 차이?
}
}
답
String data = "100:서울분당:이창호:01033338888:hello@nate.com";
String parse[] = data.split(":");
ContractInfo c = new ContractInfo(Integer.parseInt(parse[0]), parse[1], parse[2], parse[3], parse[4]);
System.out.println(c);
System.out.println(parse[2]);


해설
String parse[] = data.split(”:”)
split 메소드 쪼개는 역할. “:” :을 기준으로 쪼갠다.
>5개가 나옴
파싱이 제대로 됐다 : 그 언어의 오브젝트로 바뀌면 됐다
ContractInfo c = new ContractInfo(parse[0], parse[1], parse[2], parse[3], parse[4]);
ContractInfo c = new ContractInfo(Integer.parseInt(parse[0]), parse[1], parse[2], parse[3], parse[4]);
> parse.length하면 5가 나옴
> parse[2] 하면 이창호가 나옴
* System.out.println(c.getMoney()); > 이게 바로 파싱한 것
Share article