public class Sample1 {
public static void main(String[] args) {
// 문자열 관련 메서드
String str = "동일한 문자열인지 비교";
boolean resBool = str.equals("동일한 문자열인지 비교");
System.out.println(resBool);
str = "문자열에서 문자를 추출하기 위한 메서드";
char resChar = str.charAt(0);
System.out.println(resChar);
str = "문자열의 길이를 구하는 메서드";
int resInt = str.length();
System.out.println(resInt);
str = "문자열에 특정 문자열이 포함되어 있는지 확인하는 메서드";
resBool = str.contains("포함"); //사용한 기능(contains)에 마우스커서 올리면 반환타입 알려주는데(boolean) 그거에 맞게 저장하기
System.out.println(resBool); //()안에 매개변수도 알려줌 char sequence = 문자열
str = "문자열에서 특정 문자열을 찾아서 변경하는 메서드";
String resStr = str.replace("특정", "일부"); //특정을 일부로 대체
System.out.println(resStr);
str = "문자열에서 특정 구분자를 기준으로 문자열 분리";
String[] resStrArr = str.split(" ");
System.out.println(Arrays.toString(resStrArr));
str = "010-1234-5678";
resStrArr = str.split("-");
System.out.println(Arrays.toString(resStrArr));
str = "username@domain.com";
resStrArr = str.split("@");
System.out.println(Arrays.toString(resStrArr));
str = "분리된 문자열을 특정 구분자를 기준으로 재결합";
resStrArr = str.split(" ");
resStr = String.join("\t", resStrArr);
System.out.println(resStr);
str = "010-1234-5678";
resStrArr = str.split("-"); //분리해서 뭔가 사용하고
resStr = String.join("-", resStrArr); //재조립
System.out.println(resStr);
str = " 불필요한 앞/뒤 공백을 제거 ";
resStr = str.trim();
System.out.println(resStr);
str = "문자열에서 일부 문자열만 분리"; //문자와 문자 사이에 번호가 들어간다고 봐야 함.
resStr = str.substring(6); //"와 문 사이가 0, 문과 자 사이가 1.
System.out.println(resStr);
resStr = str.substring(6, 8); //인덱스 범위 넘어가면 에러 나오므로 주의
System.out.println(resStr);
str = "문자열에서 지정한 문자열의 위치 찾기";
resInt = str.indexOf("지정"); //인덱스라서 인트로 반환임
System.out.println(resInt); //문자와 문자 사이에 번호가 들어간다고 봐야 함.
resInt = str.indexOf("지정");
resStr = str.substring(resInt, resInt + "지정".length());
System.out.println(resStr); //있으면 찾아서 그 길이만큼 분리해내서 출력
resInt = str.indexOf("문자열"); //"문자열", 0 써도 됨 어차피 0번부터 찾으라는 뜻이니까
System.out.println(resInt); //0번에도 10번에도 있지만 0번 하나만 출력 됨
resInt = str.indexOf("문자열", resInt + 1); //+ 1을 한 위치에서부터 찾아라,
System.out.println(resInt); //찾은 위치가 0인거 알았으니까 그 후로한번 더 찾아봐라
resInt = str.indexOf("문자열", resInt + 1);
System.out.println(resInt); //또 찾았을때 없다면 -1 나옴
str = "이 문자열에는 다양한 문자들이 포함되어 있는 문자열입니다.";
// 위 문자열에서 "문자"라는 단어가 몇개 있는지, 그리고 어느 위치에 있는지를
// 구하는 코드를 작성하시오. (찾은 문자열의 위치는 정수 배열에 저장하시오.)
int[] arr = new int[0];
int num = -1;
while(true) {
if(str.indexOf("문자", num + 1) != -1){
int[] arrCopy = new int[arr.length + 1];
System.arraycopy(arr, 0, arrCopy, 0, arr.length);
num = str.indexOf("문자", num + 1);
arrCopy[arrCopy.length - 1] = num; //num번 인덱스에 찾으려는 문자가 있습니다
arr = arrCopy;
} else {
break;
}
}
System.out.println("\"문자\"" + "라는 단어는 총 " + arr.length + "개 있습니다.");
System.out.println(Arrays.toString(arr));
// int[] arr = new int[3];
// int j = 0;
// resInt = 0;
// for(int i = 0; i < str.length(); i++) {
// resInt = str.indexOf("문자", resInt + i);
// if(resInt != -1 && j < 3) {
// arr[j] = resInt;
// j++;
// }
// } System.out.println("답 : " + Arrays.toString(arr));
str = "영문자를 대문자/소문자로 변경. AbCdEf";
resStr = str.toUpperCase();
System.out.println(resStr);
str = "영문자를 대문자/소문자로 변경. AbCdEf";
resStr = str.toLowerCase();
System.out.println(resStr);
str = "정수 포맷 : %d";
resStr = String.format(str, 10);
System.out.println(resStr);
str = "실수 포맷 : %.2f"; //소숫점 아래 2자리 만들기 위해 반올림 해줌
resStr = String.format(str, 12.345);
System.out.println(resStr);
str = "문자열 포맷 : %s";
resStr = String.format(str, "가나다라");
System.out.println(resStr);
str = "문자 포맷 : %c";
resStr = String.format(str, 65);
System.out.println(resStr);
str = "천단위 구분 포맷 : %,d";
resStr = String.format(str, 123456789);
System.out.println(resStr);
str = "일정한 영역에서 오른쪽 정렬 포맷 : %10d"; //드래그 해서 보면 됨 10칸
resStr = String.format(str, 12);
System.out.println(resStr);
str = "일정한 영역에서 왼쪽 정렬 포맷 : %-10d";
resStr = String.format(str, 12);
System.out.println(resStr);
str = "일정한 영역에서 오른쪽 정렬 포맷 : %10s";
resStr = String.format(str, "가나다라");
System.out.println(resStr);
str = "일정한 영역에서 왼쪽 정렬 포맷 : %-10s";
resStr = String.format(str, "가나다라");
System.out.println(resStr);
// 표 형태의 출력물
String sep = "----------";
str = "+%10s+%10s+%10s+\n"; //10칸짜리 영역에서 오른쪽정렬
str += "|%10s|%10s|%10s|\n";
str += "+%10s+%10s+%10s+";
resStr = String.format(str, sep, sep, sep, "Col 1", "Col 2", "Col 3"
, sep, sep, sep);
System.out.println(resStr);
str = "%s 님의 나이는 %d세 입니다.";
resStr = String.format(str, "홍길동", 25);
System.out.println(resStr);
str = "%2$s 님의 나이는 %1$d세 입니다."; //1$ 2$ 로 매개변수의 순서 지정 가능
resStr = String.format(str, 25, "홍길동");
System.out.println(resStr);
str = "아스키 코드 %d는 아스키 문자 %c 입니다.";
resStr = String.format(str, 65, 65);
System.out.println(resStr);
str = "아스키 코드 %1$d는 아스키 문자 %1$c 입니다."; //이렇게가 가능해짐
resStr = String.format(str, 65);
System.out.println(resStr);
}
}