기주

[코테] java 문자열(String / StringBuilder) 다루는 메서드 정리 본문

알고리즘/코테

[코테] 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);
}