-
[코테] java 문자열(String / StringBuilder) 다루는 메서드 정리알고리즘/코테 2024. 9. 18. 00:02
//String 타입 String str = "abcde"; str.length() // 5 문자열 길이 str.CharAt(0) // 'a' 0번째 글자 가져오기 str.subString(a,b) // a부터 b 까지 문자열 일부 가져오기 str.equals(a) // 문자열 비교, a와 같은지 비교하기 str.equalsIgnoreCase(a) // 문자열 비교, 대소문자 상관x, a와 같은지 비교하기 str.toUpperCase(a) // 문자열 대문자로 변환 str.toLowerCase(a) // 문자열 소문자로 변환 str.contains(a) // 문자열이 특정 문자열 포함하는지 확인 str.replace(a,b) // 문자열 a를 b로 교체하기 str.split(a) // 문자열 a를 기준으로 나눠서 배열로 반환하기 str.trim() // 문자열 좌우 공백 제거하기 str.indexOf(a) // 문자열에서 처음 나타나는 a의 인덱스를 찾아 반환, 없으면 -1반환 str.lastIndexOf(a) // 문자열에서 마지막에 나타나는 a의 인덱스를 찾아 반환, 없으면 -1반환 str.startWith(a) // 문자열이 a로 시작하는지 여부 반환 str.endWith(a) // 문자열이 a로 끝나는지 여부 반환
String의 스태틱 메서드
String클래스의 인스턴스를 생성하지 않고도 사용할 수 있는 메서드이다.
그렇기 때문에 < 객체. 메서드() >의 형태가 아닌 < 클래스.메서드() >의 형태로도 사용할 수 있다.
String.valueOf() // 문자로된 배열이나 다른 타입들을 문자열 타입으로 변환
StringBuilder
StringBuilder는 기존의 만들어진 객체를 활용하여 작업이 이루어지기때문에 String보다 연산이 빠르다.
String은 계속 새로운 객체를 생성해가며 작업하기때문에 공간낭비크고 연산이 느리다.
StringBuilder sb = new StringBuilder(); // sb.append(str) // 문자열 str을 StringBuilder의 끝에 추가. sb.insert(index, str) // 지정한 위치에 문자열을 삽입. sb.delete(start, end) // 주어진 인덱스 범위의 문자열을 삭제. sb.deleteCharAt(index) // 지정한 인덱스의 문자 하나를 삭제. sb.reverse() // StringBuilder의 문자열을 뒤집기. sb.toString() // StringBuilder의 내용을 String으로 변환. sb.charAt(index) // 지정한 인덱스의 문자char를 반환. 예: char ch = sb.charAt(0); sb.length() // StringBuilder의 길이를 반환. 예: int len = sb.length(); sb.setCharAt(index, ch) // 지정한 인덱스의 문자를 새 문자로 설정합니다. 예: sb.setCharAt(0, 'H'); sb.indexOf(String str) // 주어진 문자열이 처음으로 나타나는 인덱스를 반환. 없으면 -1 반환. 예: int index = sb.indexOf("World");
StringBuilder 예시
문제) 여러개의 문자들을 뒤집어서 출력하기
Scanner sc = new Scanner(System.in); int num = sc.nextInt(); sc.nextLine(); String[] strArray = new String[num]; for(int i=0; i<num; i++){ strArray[i] = sc.next(); } for(String x: strArray){ //StringBuilder의 생성자 매개변수로 StringBuilder바로생성, 처리 후 String형태로 바로 저장 String str = new StringBuilder(x).reverse().toString(); System.out.println(str); }
문제) 주어진 문자열들을 뒤집어서 출력하기 (StringBuilder의 reverse()를 사용하지 않고)
Scanner sc = new Scanner(System.in); int num = sc.nextInt(); // nextInt()는 줄바꿈이 적용안되기때문에 줄바꿈 소비 해줘야함. sc.nextLine(); String[] strArray = new String[num]; for(int i=0; i<num; i++){ strArray[i] = sc.next(); // next()는 상황에따라 자동으로 공백, 줄바꿈 소비 알아서 해줌. } for(String x: strArray){ // 문자를 양쪽 맨끝부터 하나씩 교환 char[] chArr = x.toCharArray(); int lt = 0, rt = x.length()-1; while(lt<=rt){ char tmp = chArr[lt]; chArr[lt] = chArr[rt]; chArr[rt] = tmp; lt++; rt--; } // String의 스태틱 메서드 valueOf사용해서 문자열 배열을 문자로 변환 String str = String.valueOf(chArr); System.out.println(str); }
'알고리즘 > 코테' 카테고리의 다른 글
[코테] java-중복된 문자 제거하기 (0) 2024.10.28 [TIL] 아스키코드로 대소문자 변환하기 (0) 2024.10.25 [코테] 자료구조5 - HashMap, HashSet 사용하기 (0) 2024.10.05 [코테] 자료구조 - 덱 메서드 정리 (1) 2024.10.02 [코테] java 우선순위큐 (0) 2024.09.20