1. List를 문자열로 바꾸기
val numbers = listOf(12, 24, 46, 68, 80)
val n1 = numbers.joinToString() // n1: "12, 24, 46, 68, 80"
val n2 = numbers.joinToString("") // n2: "1224466880"
val watermelon = listOf("수", "박", "수", "박")
val w1 = numbers.joinToString() // w1: "수, 박, 수, 박"
val w2 = numbers.joinToString("") // w2: "수박수박"
2. 접두사랑 접미사 붙이기
val numbers = listOf(11, 22, 3, 41, 52, 6)
val string = numbers.joinToString(prefix = "<", postfix = ">", separator = "")
assertEquals("<1122341526>", string)
3. List가 너무 길면 limit을 설정하기
val chars = charArrayOf('h', 'e', 'l', 'l', 'o', 'o', 'o', 'o')
val string = chars.joinToString(separator = "", limit = 5, truncated = "!") { it.uppercaseChar().toString() }
assertEquals("HELLO!", string)
trucated: 몹시 생략된, 잘라버린.
즉 limit 뒤에 있는 문자열은 !로 생략/대체 한다고 보면 된다.
그리고 추가로 람다식을 이용해서 캐릭터들을 대문자로 바꾸어주었다.
4. 기존 string에 list에 있는 element를 추가하기 - joinTo()
val sb = StringBuilder("An existing string and a list: ")
val numbers = listOf(11, 22, 3, 41, 52, 6)
val string = numbers.joinTo(sb).toString()
assertEquals("An existing string and a list: 11, 22, 3, 41, 52, 6", string)
joinTo 안에도 동일하게 separator을 넣어줄 수 있다
val sb = StringBuilder("An existing string and a list: ")
val numbers = listOf(11, 22, 3, 41, 52, 6)
val string = numbers.joinTo(sb, "").toString()
assertEquals("An existing string and a list: 1122341526", string)
5. 반복문 사용하기
val elements = listOf("a", "b", "c", "d", "e")
var string = ""
for(s in elements){
string += s
}
assertEquals("abcde", string)
쉬운데 문자열을 덧셈할 수 있다는 개념이 아직 생소해서 응용할 때 떠오르지는 않는다.
하지만 리스트가 너무 클 떄에는 효율적이지 않다고 한다. 그래서 대신에 StringBuilder을 사용할 수 있다.
6. StringBuilder() 사용하기
val letters = listOf("a", "b", "c", "d", "e", "f")
val builder = StringBuilder()
for(s in letters){
builder.append(s)
}
assertEquals("abcdef", builder.toString())
StringBuilder의 사용의 편리성을 더하는 몇가지 syntax가 있다.
val letters = listOf("a", "b", "c", "d", "e", "f")
val alreadyAString = buildString { for (s in letters) append(s) } // `this` is a StringBuilder inside the lambda
assertEquals("abcdef", alreadyAString)
출력값을 customize 하기 위해서 removeSuffix() 와 같은 함수를 이용할 수도 있다.
val letters = listOf("a", "b", "c", "d", "e", "f")
val string = buildString { letters.forEach(::append) }
val withoutSuffix = string.removeSuffix("f")
assertEquals("abcde", withoutSuffix)
'Android (Kotlin) > kotlin 문법' 카테고리의 다른 글
[Kotlin] 유용한 기능 (1) | 2023.12.04 |
---|---|
[Kotlin] List - forEach (2) | 2023.12.04 |
[Kotlin] abstract vs interface (1) | 2023.12.03 |
[Kotlin] Data Class (1) | 2023.12.03 |
[Collection Sort - kotlin] sort(), sortBy(), sortWith() (0) | 2023.11.30 |