[Kotlin] 코틀린에서 String 사용해보기


 

다른 많은 언어에서 지원하는 String을 코틀린이 지원을 안할 리가 없겠죠? 오늘은 String에 대해서 알아보겠습니다. String이 제공하는 함수는 매우 다양하겠지만 그걸 전부 알려드릴 순 없고 자주 사용하는 함수만 한번 보도록 하겠습니다.



String

String, 즉 문자열은 기본적으로 여러 개의 char가 모여서 만들어진 자료형입니다. char 배열에 문자 하나씩 넣어서 사용해도 되지만.. 매우 불편하겠죠? 굳이 있는 걸 사용하지 않을 이유가 없습니다. 문자열을 어떻게 선언하고 어떤 함수를 가지고 있을까요? 일단 전체적인 사용법을 보기 전에 메서드들을 한번 보도록 하겠습니다.

  • indexOf : 문자열에서 특정 index 위치의 character를 가져오는 함수입니다. 
  • split : 지정한 문자로 문자열을 자르는 함수입니다.
  • joinToString : 리스트 안의 문자열들을 특정 문자열을 사이에 넣어서 합치는 함수입니다.
  • replace : 특정 문자열을 지정한 문자열로 바꿔줍니다.
  • substring : 문자열에서 임의의 범위를 정해 잘라줍니다.
  • startsWith : 해당 문자열이 지정한 문자열로 시작하는지 판별합니다.
  • endsWith : 해당 문자열이 지정한 문자열로 끝나는지 판별합니다.
  • contains : 특정 문자열이 포함되어 있는지 체크합니다.
말로는 장황하게 써 놨는데, 사실 아래 코드만 보셔도 괜찮을 겁니다. 아래 코드로 위 함수들을 어떻게 사용하는지, 어떤 결과가 나타나는 지 한 번 확인해 봅시다.

// """ """ <-- 이걸 사용하면 문자열을 여러줄로 나눌 수 있습니다.
var str = """
hi,
my
name
is 
keykat
"""

// 함수 같은 곳에서 사용하면 들여쓰기로 보기 좋게 하고 싶은 일도 있을텐데, 
// |와 trimMargin()을 이용하면 가독성을 향상시킬 수 있습니다.
var str2 = """
    |hi
    |my
    |name
    |is
    |keykat
""".trimMargin()


var s = "hello, my friend. hello kotlin. hello world."


println(s[0])
// 다른 언어와 같이 index로 접근할 수 있습니다.
// 결과 : h


println(s.indexOf('h'))
// indexOf도 있네요. 맨 처음 나오는 h의 인덱스를 가져옵니다.
// 결과 : 0


var s1 = s.split(' ') 
// ' ', 즉 공백을 기준으로 문자열을 자릅니다.
// 결과 : [hello,, my, friend., hello, kotlin., hello, world.]


var s2 = s1.joinToString("-") 
// 위에서 공백을 기준으로 잘랐던 것을 저장한 s1의 단어들을 '-'로 전부 합쳐줍니다.
// 결과 : hello,-my-friend.-hello-kotlin.-hello-world.

var s2_2 = s1.joinToString(" ")
// 이렇게 하면 원래 문자열 (s) -> 리스트화 (s1) -> 리스트를 문자열로 원상복구 (s2_2)가 되겠죠?


var s3 = s.replace(' ', '+')
// s에서 공백을 '+'로 전부 치환해줍니다.
// 결과 : hello,+my+friend.+hello+kotlin.+hello+world.


var s4 = s.substring(2, 11) 
// 2번부터 10번까지 잘라서 가져옵니다.
// 결과 : llo, my f


println(s.startsWith("hello")) // 문장의 첫 단어가 hello 이니까 true


println(s.startsWith("ello")) // 문장의 첫 단어는 hello이며 ello랑 다르므로 false


println(s.endsWith("world")) // 문장의 끝 단어는 world.이니까 false ('.' 까지 포함해야 합니다.)


println(s.endsWith("world.")) // 문장의 끝 단어가 world.이므로 true


println(s.contains("hello")) // hello를 포함하고 있으므로 true




 



마치며..

사실 문자열 처리는 위의 내용이 끝이 아닙니다. 문자열을 +로 연결한다던가, 출력은 어떻게 한다던가.. 그런데 이런 기본적인 부분은 자바와 큰 차이가 없어서 그냥 넘어갔습니다. (사실 위의 함수들도 자바랑 별 차이가 없습니다. ㅎㅎ) 그냥 코틀린에서 문자열 사용하는 것도 별 거 없구나 하는 정도로만 넘어가시면 어떨까 싶습니다.

혹시 더 자세한 내용을 원하신다면 코틀린 공식 도큐먼트가 있는데,
이 쪽으로 들어가셔서 확인해 보시면 될 것 같습니다. 전 안 찾아봐서 있는 지 모르겠습니다.

슬슬 클래스 등 객체 지향적인 내용을 공부해서 코틀린으로도 앱을 하나 만들어보고 싶은데, 공부 속도가 느리네요.. 더 열심히 해야겠습니다. 다들 즐거운 코딩하세요!

댓글