[JAVA] 문자열 다루기 기본

태로미·2023년 10월 2일
0

Programmers

목록 보기
24/29
post-thumbnail

❓문제


문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수,
solution을 완성하세요.
예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.



🚫제한


  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.


💻입출력 예


sreturn
"a234"false
"1234"true













📝해결


1. for문 & if문

class Solution {
  public boolean solution(String s) {

    if(s.length() != 4 && s.length() != 6) 
    return false;

    for (int i=0; i<s.length(); i++) {
      if (s.charAt(i) < '0' || s.charAt(i) > '9') 
      return false;
    }

    return true;
  }
}
  • 문자열의 길이가 4 또는 6이 아니라면 return false.
  • 문자열의 길이만큼 반복문을 돌려 charAt() 메서드로 문자열의 문자 하나가
    ‘0’ 보다 작거나 ‘9’보다 크다면 return false.
    • char타입은 아스키코드로 대소 비교 가능.
  • 위의 모든 조건을 통과했다면 문자열은 길이가 4또는 6이며 ‘0’보다 크고 ‘9’보다 작으므로 return true.

2. try-catch문

class Solution {
	public boolean solution(String s) {

		if(s.length() == 4 || s.length() == 6){
      try {
        int x = Integer.parseInt(s);
        return true;
      } 
			catch(NumberFormatException e) {
        return false;
      }
		}

    else return false;
	}
}
  • 문자열의 길이가 4 또는 6이라면, try-catch문 실행. (if문)
    • 문자열의 길이가 4 또는 6이 아니라면 return false. (else문)
  • 문자열을 int타입으로 바꾸어 변수 x에 대입하고 return true.
    • 문자열이 숫자로만 이루어져 있을 경우 가능.
  • 만약 NFE가 발생한다면 처리방법으로 catch문에 작성된 코드를 실행함.
  • 문자열을 int타입으로 바꾸는 과정에서 해당 문자열이 숫자가 아닌 문자(a, b 등)로 이루어져 있으면 NFE 예외상황이 발생하는데, 이는 문자열이 숫자로 이루어져 있지 않다는 뜻이므로 return false.

3. 정규 표현식

class Solution {
	public boolean solution(String s) {

		return s.matches("[0-9]{4}|[0-9]{6}");
	}
}
  • String.matches()특정 패턴의 문자열을 포함하는지 확인할 수 있음.
    • 여기서 특정패턴이란, 정규표현식(Regex)을 의미.
    • 문자열에 정규표현식이 일치하는지를 boolean타입으로 return함.
  • 0부터 9까지의 숫자중에 4자리, 또는 0부터 9까지의 숫자중에 6자리가 맞다면 true를 return, 아니라면 false를 return함.
    • 길이 검사 및 들어가는 데이터 모두 확인 가능.






💭마무리

  • Level_1 / 06:54
  • Point
    – String_charAt() / matches()
    – try-catch문
    – 정규 표현식
    – 특정 패턴의 문자열 포함 여부 확인

matches() 메서드는 처음 접해보는 것 같다😳
정규 표현식도 마냥 외계어처럼 보였는데 계속 접하다보니 읽히는 것 같고ㅎㅎㅎ
try-catch문을 이렇게 사용하진 않지만 그래도 활용한 사람 대단하다...!!!
역시 우리나라에는 천재가 너무 많은 것 같네...😅


profile
Here And Now

0개의 댓글