본문 바로가기

Java

[exam12] 문자열 (String) 관련 메서드

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);
		
		
		
	}
}

'Java' 카테고리의 다른 글

[210831] [exam15] 바이트 기반 파일 입출력  (0) 2021.09.11
[exam15] try ~ catch문  (0) 2021.09.11
[exam14] Map  (0) 2021.09.11
[exam14] Set  (0) 2021.09.11
[exam14] List  (0) 2021.09.11