● String 클래스
1. length(문자열)
- 해당 문자열의 길이(int)를 return
2. charAt(인덱스)
- 해당 위치의 문자(char)를 return
3. indexOf(문자열)
- 해당 문자열의 인덱스(int)를 return
4. substring(인덱스)
- 해당 인덱스부터 끝까지 자른 문자열(String)을 return
5. split(문자열)
- 해당 문자열로 자른 String[] 을 return
6. join(연결 문자열, 배열) (static 메소드)
- 해당 배열을 연결 문자열로 연결한 하나의 String을 return
실습(String 클래스 메소드)
1. length(문자열)
public class StringTest {
public static void main(String[] args) {
String msg = "hello everyone nice to meet you";
System.out.println(msg.length());
}
}

2. charAt(인덱스)
public class StringTest {
public static void main(String[] args) {
String msg = "hello everyone nice to meet you";
System.out.println(msg.charAt(4));
}
}

3. indexOf(문자열)
public class StringTest {
public static void main(String[] args) {
String msg = "hello everyone nice to meet you";
// indexOf(값) : 해당 문자열에서 값의 위치 인덱스를 return
System.out.println(msg.indexOf("e")); // 중복된 값이 존재하는 경우 맨 처음 값의 인덱스 출력
System.out.println(msg.indexOf("me"));
System.out.println(msg.indexOf("안녕")); // 값이 존재하지 않을 경우 -1 출력
// indexOf(값, 인덱스) : 해당 문자열에서 인덱스부터 값을 찾아 인덱스 번호를 return
System.out.println(msg.indexOf("e", 1));
}
}

4. substring(인덱스)
public class StringTest {
public static void main(String[] args) {
String msg = "hello everyone nice to meet you";
// substring(인덱스번호) : 해당 인덱스부터 끝까지 자른 String을 return
System.out.println(msg.substring(6));
}
}

5. split(문자열)
public class StringTest {
public static void main(String[] args) {
String msg = "hello everyone nice to meet you";
// split(값)
String[] temp = msg.split(" ");
for(int i = 0; i < temp.length; i++) {
System.out.println(temp[i]);
}
}
}

6. join(연결 문자열, 배열)
public class StringTest {
public static void main(String[] args) {
String msg = "hello everyone nice to meet you";
String[] temp = msg.split(" ");
// join(값, 배열) : String 클래스 안에 있는 static 메소드
System.out.println(String.join("안녕", temp));
}
}

실습(String 클래스)
1. 암호화 및 복호화
import java.util.Scanner;
public class StringTask {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
final int KEY = 3;
System.out.print("비밀번호 입력 >> ");
String pw = sc.nextLine();
String en_pw = "";
for(int i = 0; i < pw.length(); i++) {
en_pw += (char)(pw.charAt(i) * KEY);
}
System.out.println("암호화된 pw : " + en_pw);
// 암호화된 en_pw를 다시 복호화하여 출력하기
String de_pw = "";
for(int i = 0; i < en_pw.length(); i++) {
de_pw += (char)(en_pw.charAt(i) / KEY);
}
System.out.println("복호화된 pw : " + de_pw);
}
}

2. 사용자에게 문자열을 입력 받아 소문자는 대문자로, 대문자는 소문자로, 그 외의 문자는 그대로 변경하여 출력하기
import java.util.Scanner;
public class StringTask {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("입력 >> ");
String input1 = sc.nextLine();
String res1 = "";
for(int i = 0; i < input1.length(); i++) {
char ch = input1.charAt(i);
if(ch >= 'A' && ch <= 'Z') { // 대문자일 때
res1 += (char)(ch + 32); // 소문자로 바꾸기
} else if(ch >= 'a' && ch <= 'z') { // 소문자일 때
res1 += (char)(ch - 32); // 대문자로 바꾸기
} else { // 대문자도 아니고, 소문자도 아닐 때
res1 += ch; // 그대로
}
}
System.out.println("결과 >> " + res1);
}
}

3. 사용자에게 문자열을 입력 받아 두번째 o가 나오는 이후부터 끝까지 자른 문자열 출력하기
import java.util.Scanner;
public class StringTask {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("입력 >> ");
String input2 = sc.nextLine();
int first0 = input2.indexOf("o"); // 첫번째 o의 인덱스 번호
int second0 = input2.indexOf("o", first0 + 1);
String res2 = input2.substring(second0);
System.out.println("결과 >> " + res2);
}
}

4. 사용자에게 한줄로 콤마로 연결된 정보를 입력 받아 출력하기
- 입력 예시 : 홍길동, 20, 서울시 역삼동, 010-1234-5678
- 출력 예시 :
이름 : 홍길동
2년 후 나이 : 20
주소 : 서울시 역삼동
휴대폰번호 : 010-1234-5678
import java.util.Scanner;
public class StringTask {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정보 입력 >> ");
String input3 = sc.nextLine();
String[] ar = input3.split(", ");
String[] header = {"이름", "2년 후 나이", "주소", "휴대폰번호"};
ar[1] = Integer.parseInt(ar[1]) + 2 + "";
ar[3] = String.join("", ar[3].split("-"));
for(int i = 0; i < ar.length; i++) {
System.out.println(header[i] + " : " + ar[i]);
}
}
}

5. 사용자에게 한글로 숫자를 입력 받아 숫자로 출력하기
- 입력 예시 : 일이삼사
- 출력 예시 : 1234
import java.util.Scanner;
public class StringTask {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("한글 입력 >> ");
String input4 = sc.nextLine();
String hangeul = "공일이삼사오육칠팔구";
String res3 = "";
for(int i = 0; i < input4.length(); i++) {
res3 += hangeul.indexOf(input4.charAt(i));
}
System.out.println(res3);
}
}
