본문 바로가기

프로그래밍 언어/Kotlin

[Kotlin] 문자열 String

해당 포스팅에서는 문자열을 좀 더 세부적으로 알아본다.

 

문자열에는 다양한 메서드들이 있다.

 

그 중 자주 쓰이는 메서드들을 알아보도록 하며, 그 외의 메서드들은 아래 링크를 통해 Kotlin 공식 문서에서 참조 바랍니다.

 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/

 

init

var string = "초기화"

 

 

문자열 사이에 변수 값

1. $변수

2. ${변수}

 

1번으로 사용하실 경우, 다음 문자열과 띄어쓰기로 구분해야 한다.

val data = "20"
val string = "저는 ${data}살 입니다."
println(string)
println("저는 $data살 입니다.") //에러 : 변수명을 data살로 인식하기에 띄어쓰기를 해주어야 한다.
-----------------------------
저는 20살 입니다.

 

length() : Int

문자열 길이를 나타낸다.

var string = "hello"
print(string.length)
-------------------------
5

 

equal() : Boolean

문자열을 비교한다.

var string = "hello"
println(string.equals("hello"))
println(string.equals("asd"))
-------------------------
true
false

 

substring() : String

문자열 자르기

val string = "012345"
println(string.substring(0, 4))  // 0번 인덱스부터 4번 인덱스 이전까지
----------------
0123

 

repeat() : String

문자열 반복

val string = "a"
println(string.repeat(3))
---------------------------------
aaa

 

count() : Int

문자열 내에서 조건에 만족하는 개수

val string = "abcde"
println(string.count())
println(string.count{it=='a'})
--------------------------------
5
1

 

indexOf() : Int

특정 문자의 인덱스를 반환

val string = "abcde"
println(string.indexOf('a'))
println(string.indexOf('c'))
-----------------------------
0
2

 

contains() : Boolean

특정 문자 또는 문자열이 포함되어 있는지 확인

val string = "abcde"
println(string.contains('a'))
println(string.contains("bc"))
println(string.contains('#'))
-----------------------------
true
true
false

 

replace() : String

특정 문자 변경

var string = "aa#aa#aa#"
string.replace("a", "b")
println(string)

string = string.replace("a", "b")
println(string)
----------------------------------
aa#aa#aa#
bb#bb#bb#

 

toUpperCase(), toLowerCase() : Boolean

알파벳 대소문자 변경

var string = "aaBB"
string = string.toUpperCase()
println(string)

string = string.toLowerCase()
println(string)
----------------------------------
AABB
aabb

 

isUpperCase(), isLowerCase() : Boolean

알파벳 대소문자 확인

 

해당 메서드는 문자열이 아닌 문자를 사용해야 합니다.

 

var char = 'a'
println(string.isUpperCase())
println(string.isLowerCase())
----------------------------------
false
true

 

StringBuilder()

StringBuilder() 는 메서드가 아닌 객체입니다.

 

해당 객체는 문자열을 추가, 변경 등의 작업이 많이 이루어질 때 사용합니다.

 

그 이유는 일반적으로 String 객체에 추가, 변경, 수정 등의 작업을 할 때 우리는 단순히 값이 바뀐다고 생각하지만 시스템 내부에서는 새로운 객체를 만들어 그 객체에 할당하여 우리에게 보여주는 것이기 때문에 메모리 낭비가 일어날 수 있습니다.

 

따라서 StringBuilder() 객체를 사용하여 메모리를 절약할 수 있습니다.

 

여기에 없는 메서드들은 다음 링크에서 확인하실 수 있습니다.

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-string-builder/

 

StringBuilder Init

val sb = StringBuilder() // 빈 값 초기화
val sb2 = StringBuilder("aaa") // 값 초기화

 

append()

값 추가

val sb = StringBuilder()
sb.append("a")
println(sb.toString())

sb.append("b")
println(sb.toString())
------------------------
a
ab

 

length()

길이 확인

val sb = StringBuilder("aaa")
println(sb.length)
---------------
3

 

setLength()

문자열 길이를 변경

val sb = StringBuilder("aaa")
sb.setLength(2)
println(sb.toString())

sb.setLength(1)
println(sb.toString())

sb.setLength(0)   // 길이가 0이므로 아무것도 안나옴
--------------------------------
aa
a

 

clear()

빈 값으로 변경

val sb = StringBuilder("aaa")
sb.clear()
println(sb.toString())
--------------------------
(아무것도 안나옴)

 

deleteAt()

특정 인덱스 값 삭제

val sb = StringBuilder("abc")
sb.deleteAt(1)
println(sb.toString())
--------------------------------
ac

 

 

deleteRange()

인덱스 범위 삭제

val sb = StringBuilder("012")
sb.deleteRange(1, 3)  // 1번 인덱스부터 3번 인덱스 전까지
println(sb.toString())
--------------------------------
0

 

insert()

특정 인덱스에 값 추가

val sb = StringBuilder("abf")
sb.insert(2, 'c')  // 1번 인덱스부터 3번 인덱스 전까지
println(sb.toString())

sb.insert(3, "de")
println(sb.toString())
--------------------------------
abcf
abcde

 

 

'프로그래밍 언어 > Kotlin' 카테고리의 다른 글

[Kotlin] 정렬  (0) 2024.06.11
[Kotlin] 배열과 리스트 복사  (0) 2024.03.06
[Kotlin] 코틀린 기초 문법  (1) 2023.11.03