오늘은 간단하게 String에 대하여 말해볼까 합니다.

(가장 만만한 게 또 String이네요... 😭😭)

 

String 관련하여 %d 또는 %s 등의 포맷을 사용하는걸 한 번쯤 보신 적 있으실 겁니다.

또는 String 공백 제거 등

알아두면 유용한 기능들에 대하여 알아보겠습니다.

💁‍♂️💁‍♂️


오늘의 키워드 🔑

 

✔️ String.format (%d, %f ...) 
✔️ Escape Character (\n, \" ...) 

✔️ toUpperCase, toLowerCase 

✔️ trim() 

 


 

이전에 String 관련하여 간단하게 같이 살펴봤었습니다!

이번에는 대소문자변환, 형식문자 사용(%d, %f ...), 이스케이프 문자, 공백제거에 대하여

알아보겠습니다.  💁‍♂️💁‍♂️

 

 

혹시 String 문자열 자르기, 찾기, 변환에 대한 내용을 찾으신다면

제가 작성한 게시물들은 어떠신가요?

 

 

[Android] Kotlin String 문자열 자르기, 문자열 분할 (substring, split, chunked).

String 변수를 활용하여 다양한 작업을 할 수 있는데요. 오늘은 String을 활용하는 내용을 정리해볼까 합니다. (두구두구) 🥁🥁🥁 문자열 찾기 / 문자열 변환 하기 (indexOf, replace) 살펴보기 [Android] K

salmonpack.tistory.com

 

[Android] Kotlin String 문자열 찾기, 문자열 변경 치환 (indexOf, replace)

String 변수를 활용하여 다양한 작업을 할 수 있는데요. 오늘은 String을 활용하는 내용을 정리해볼까 합니다. (두구두구) 🥁🥁🥁 문자열 자르기 / 문자열 분할 하기 (substring, split, chunked) 살펴보기

salmonpack.tistory.com

 

 


✔️ String.format (%d, %f ...)

 

문자열에서 특정 단어가 사용자의 결과 값에 따라 변경되는 경우

어떻게 로직 구현을 하셨나요??

 

개발자에게는 상상력이 중요하죠! 🌈🌈

다 같이 상상을 해봅시다.

 

계산기 앱을 만들고 있고, 계산 결과를 항상 화면에 출력해야 합니다. 

"계산 결과는 10입니다." 혹은 "계산 결과는 17입니다." 

위와 같은 문자열에서는 결과값을 제외하면 

"계산 결과는 ()입니다."가 반복되고 있죠! 

 

여기서 개발자들은 뭔가 공통으로 사용하고 싶고

로직을 줄이고 싶은 내적 갈등이 시작됩니다.

(반복적으로 불필요한 일은 개발자들이 싫어합니다. 🚫)

 

자 글로 된 설명이 너무 많았죠

이제 기다리시던 소스화면이 등장합니다.

🧑‍💻🧑‍💻

위와 같은 형태로 사용 가능합니다.

result = "계산 결과는 10입니다.

 

 

< 형식 문자 >

• %b : Boolean 유형

• %d : 부호 있는 정수 유형

• %f : 10진 실수 유형

• %c : 문자형

• %s : 문자열

• %t : 날짜/시간 형

 

 


✔️ Escape Character (\n, \" ...)

 

문자열을 활용할 때 특수한 문자가 필요한 경우가 있습니다.

예를 들면 줄 바꿈 또는 따옴표 등이 있죠!

 

result = "따옴표 출력 String Quote" 

               첫째줄 진행 

               이후 둘째 줄 진행 

 

 

< Escape Character >

• \t : 탭(tab)

• \\ : 백슬래쉬(backslash)

• \b : 백스페이스(backspace)

• \n : 개행

• \' : 작은따옴표

• \" : 큰 따옴표

 


✔️ toUpperCase, toLowerCase

 

API통신 결과 값이나 특정 결과값을 사용할 때 

String값의 대소문자 때문에 고생하신 적 있으신가요? 

 

API response값으로 isYn으로 구분값을 내려준다고 생각해 봅시다.

그렇다면 isYn값을 받아서 Y 인지 N 인지 구분하여

분기처리를 하겠죠?

 

if (isYn == "Y") {
    ...
}

 

하지만 애석하게도

항상 우리가 원하는 정상적인 값만 들어오는 건 아니죠...  🥲🥲

 

만약의 경우 서버에서 Y , y 값을 혼동하여 사용한다면

(모든 개발자들은 사람이기 때문에 실수하거나 커뮤니케이션 오류가 발생합니다. 😭😭

 

그렇기 때문에 우리는 모든 상황을 고려해야겠죠

이때 필요한 멋진 함수가 있습니다.

바로 toUpperCase, toLowerCase입니다.  🎉

(강제로 문자열을 모두 대문자 or 모두 소문자로 변형시켜 줍니다.)

 

 

🤔🤔🤔

toUpperCase deprecated.

 

toUpperCase(), toLowerCase()는 모두 deprecated 되었네요. 

uppercase(), lowercase()를 사용합시다 !  

 

 


✔️ trim()

 

위와 비슷한 상황이 또 있습니다 !!!

(제가 직접 겪고 눈물을 흘린 상황입니다.)

 

이해를 돕기 위하여 위와 같은 상황이라고 생각해 보겠습니다.

isYn 값을 받아서 Y와 N 값으로 구분하려고 합니다.

 

하지만 이번에는 어떠한 이유로 isYn 값이 "Y " 와 같이 

"Y(공백)" 공백이 포함된 값으로 수신된 경우입니다. 

(대부분 위와 같은 구분값은 boolean형 True/False 값으로 구분합니다.)

 

우리가 생각하기에는 "Y"값이나 "Y " 값이나 같다고 생각하지만 

코딩의 세계에서는 어림도 없죠! 

 

if(isYn == "Y")

 

위와 같은 구문에서 isYn은 공백이 포함되었기 때문에

else 구문으로 빠지게 됩니다.

 

제가 개발을 처음 시작했을 때 이와 같은 상황이 발생했습니다.

 

백앤드 개발자 : 정상 결과 값을 보내고 있는데요?

앱 개발자 (나) : 왜 로직이 비정상 적으로 동작하는 거지?

 

여기서 필요한 부분이 바로 

 공 백 제 거 ! 

입니다.

 

 하지만  🚫🚫🚫 

여기서도 주의해야 할 부분이 있습니다.

trim()은 문자의 앞 뒤의 공백을 제거해 주는 기능입니다.

문제는 바로 앞! 뒤! 입니다. 

 

"String Result " -> "String Result"

이와 같이 문자의 맨 처음과 맨 마지막의 공백만 제거해 주게 됩니다.

위의 "String Result"의 중간에 있는 공백을 제거하기 위해서는

이와 같이 공백 문자를 치환이 필요합니다.

 

 

 


여기까지 저의 긴 글을 읽어주셔서 감사합니다.

제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 해보겠습니다.

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기