[Java] 문자 정리 - split(), replace(), trim()

jhkim·2023년 12월 25일

이 글을 작성하는 이유

  • 문자열을 나눠서 문제를 풀이하는 경우가 굉장히 많다. 특히, 문자열을 단어 하나 단위로 쪼개거나, 띄어쓰기, 특수문자 등을 기준으로 잘라 사용해야 하는 경우가 많은데, 여기서는 활용도가 높은 split() 위주로 활용하여 단어를 나누는 방법에 대해 서술할 예정이다.

문자 하나를 가져올 때

public class stackPracticeQuestion {
	public static void checkParenthesis(String str){
        Stack stack = new Stack();
        boolean checkFlag = true;

        for (String s: str.split("")){
            if (s.equals("(")) {
                stack.push(s);
            } else {
                if (stack.isEmpty()){
                    checkFlag = false;
                    break;
                } else {
                    stack.pop();
                }
            }
        }
 }
  • for (String s: str.split("")) 를 기준으로 문자를 하나씩 잘라서 확인할 수 있다.

  • 이외에도 tocharArray()로 변환하여 한 문자씩 가지고 올 수 있다. (다만, char로 문자형태가 바뀌긴 할 것이다.)

String str = "ABCDE";
char[] arr = str.toCharArray();
for (int i = 0; i <arr.length; i++){
	System.out.println(arr[i]+" ");
   }

(참고) charAt()

  • String으로 저장된 문자열 중에서 한 글자만 선택해서 char 타입으로 변환할 수 있는 기능을 가진다.
String str = "안녕하세요";
char c = str.charAt(0);
System.out.println(c); // "안"

띄어쓰기를 기준으로 할 때

String[] arStr = "ABC DEF".split("\\s");
  • \\s는 공백을 의미하는데, 이러한 정규식을 사용하여 띄어쓰기 한 칸을 기준으로 단어를 분리할 수 있다.
  • 또한, 한 칸 이상의 공백을 제거하기 위해서 아래와 같은 코드를 사용할 수 있다.
String[] arStr = "ABC   DEF".split("\\s+");

그 외 (replace, trim)

  • replace는 한 문자를 다른 문자로 치환한다는 뜻으로 아래와 같이 특수문자를 공백 등으로 변경하고 싶을 때 사용할 수 있다.
s = s.replace("?"," ");
  • trim은 양 옆 공백을 지우고 싶을 때 사용할 수 있다.
s = s.trim();

종합하면 아래와 같이 코드를 구성할 수 있다.

public class Solution {
    public statuc void main(Stinrg[] args) {
    	String s = "?ab???c "; 
        s = s.replace("?"," "); // " ab   c "
        s = s.trim(); // "ab   c"
        String[] answer = s.split("\\s+"); // {ab , c}
    }
}
profile
다시 시작합니다 :)

0개의 댓글