substring으로 문자열 첫 글자를 구분해보자

게시글의 예약번호 첫 글자가 3인지 아닌지를 charAt을 사용해 판별하던 중 문제가 발생했다.
이를 해결하기 위해 java.lang.String 클래스의 substring() 메서드를 활용하여 예약번호 첫 글자를 잘라내고, 비교 연산자를 사용해 3인지 아닌지를 검증했다.
이 과정에서 ==와 eq의 사용에 대한 고민이 있었으나, GPT의 조언을 따라 특정 상황에서 둘 중 어느 것을 사용해도 큰 차이가 없음을 알게 되었다.

 

 

 

✨시작하며

전자정부 프레임워크에서 프로젝트 수행 중 게시글의 예약번호의 첫 글자가 3일 경우와 아닐 경우charAt을 사용해 구분해주었다.
charAt을 사용해 구분하는 것이 잘못된 방법이었는지 예약번호의 첫 글자가 3임에도 계속 eq쪽 jstl이 아닌 ne쪽 jstl을 탔다.
그래서 방법을 바꾸어 chatGPT에게 우선 해결방법과 조언을 물었다.

그렇게 코드를 수정하고, 결국 성공했다!

 

 

 

substring() 메서드란

java.lang.String 클래스의 substring() 메서드는 문자열의 특정 부분을 잘라내 반환한다.

  • public String substring(int beginIndex)
  • public String substring(int beginIndex, int endIndex)

이 메서드는 위와 같은 형태로 사용할 수 있다.
예를 들어 기존에 charAt을 사용해 <c:if test="${boardVO.docResChkCd.charAt(0) eq 3}">라고 작성했던 코드는  <c:if test="${fn:substring(boardVO.docResChkCd, 0, 1) == '3'}">로 수정했다.

맨 앞 글자를 잘라내 3인지 아닌지 연산자를 통해 검증하는 과정을 거쳤다.

 

비교 연산자는 어떻게 쓰지?

여기서 들은 의문점은 ==와 eq 중 무엇을 써야하냐였는데, 보통 jstl을 사용할 때 eq를 사용했던 것으로 알아서 eq를 쓸까 했었다.
우선 해당 코드는 chatGPT에게 물어본 내용이었으므로 GPT의 의견을 따르기로 했다.

eq를 써도, ==를 써도 결과에 큰 차이는 없었다.
GPT에게 둘의 차이를 물어보아도 내가 제공한 코드에서 둘의 동작에 차이는 없다고 한다.
이러한 특정한 경우에는 ==나 eq를 사용할 수 있다고 한다.
의문점이 모두 가시진 않았지만, 이러한 특수한 경우에는 우선 사용할 수 있다고 알아야겠다.
또 이런 경우가 발생하면 여러 경우의 수를 두고 테스트를 해보자.

 

 

 

📜참고