부자 되기 위한 블로그, 머니킹

문자열 자주 사용하는 함수

대문자, 소문자 판별

for (char x : str.toCharArray()) {
    if(Character.isLowerCase(x)) answer += Character.toUpperCase(x);
    else if(Character.isUpperCase(x)) answer += Character.toLowerCase(x);
}

 

 

Character 타입 판별

// 알파벳 판별
if(Character.isAlphabetic(str)) rt--;

// 숫자 판별
if(Character.isDigit(c)) answer += c;

 

 

특정 단어 인덱스 값, 인덱스 값에 위치한 단어

str.indexOf('W')
str.charAt(i)

 

 

String to Character Array

char[] c = str.toCharArray();

 

 

알파벳만 필터링

str = str.toUpperCase().replaceAll("[^A-Z]", "");

 

 

문자열 거꾸로

String tmp = StringBuilder(str).reverse().toString();

 

 

문자열 비교

str.equals(tmp); // true, false

 

 

문자열 나누기

str = str.substring(7); // 인덱스 7 위치 이후로 가져옴
str = str.substring(5,12) // 인덱스 5부터 12까지 가져옴

 

 

StringBuffer

  • StringBuffer : 문자열을 추가하거나 변형할 때 주로 사용하는 자료형이다.
    • StringBuffer, StringBuilder는 String의 한계(concat을 사용하면 많은 자원이 듬)을 극복하기 위해 고안됨
    • String은 기본적으로 불변하기 때문에 값을 추가할때 기존 값을 버리고 새로 할당함
StringBuffer sb = new StringBuffer();  // StringBuffer 객체 sb 생성
sb.append("hello"); // 값 추가
sb.insert(0, "hello "); // 값 삽입
sb.substring(0, 4); // 문자열 나누기
sb.reverse(); // 순서 뒤집기
sb.toString(); // String 형태로 변경

 

 

알고리즘 공략

대소문자 구분을 안한다

이런 전제 조건이 있다면 반드시 소문자든 대문자든 한쪽으로 공용화 시켜준다.

 

 

필터 조건 ( 숫자를 제외한다, 기호를 제외한다)

문자열을 Character 타입으로 변환 후에 is 함수 또는 if 조건문을 통해 걸러준다.

 

 

중복 문자

indexOf 함수는 맨 처음에 발견한 것을 가져오기에 중복을 제거하기에 유용하다.

        for (int i = 0; i < str.length(); i++) {
           if (i == str.indexOf(str.charAt(i))) {
                answer += str.charAt(i);
            }
       }

 

 

문자열 → 숫자

Integer.valueOf 함수를 사용하면 맨 앞에 0인 문자열이더라도 자동으로 제거하여 int 형으로 바꿔준다.

 

 

문자열 속 두개의 문자 관계를 유추할 때

  • 한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요.

two point 전략으로 접근하는 것도 좋은 방법이다.