Strings are a sequence of characters. For example, "Hello there!"
is a string literal.
In Kotlin, all strings are objects of String
class. Meaning, string literals such as "Hello there!"
are implemented as instances of this class.
Here is how you can define a String
variable in Kotlin. For example,
val myString = "Hey there!"
Here, myString is a variable of type String
.
You can declare variable of type String
and specify its type in one statement, and initialize the variable in another statement later in the program.
val myString: String ... .. ... myString = "Howdy"
To access elements (character) of a string, index access operator is used. For example,
val myString = "Hey there!" val item = myString[2]
Here, item variable contains y, third character of the myString string. It's because indexing in Kotlin starts from 0 not 1.
val myString = "Hey there!" var item: Char item = myString[0] // item contains 'H' item = myString[9] // item contains '!' item = myString[10] // Error! String index is out of range item = myString[-1] // Error! String index is out of range
If you need to iterate through elements of a string, you can do it easily by using a for loop.
fun main(args: Array<String>) {
val myString = "Hey!"
for (item in myString) {
println(item)
}
}
When you run the program, the output will be:
H
e
y
!
Like Java, strings are immutable in Kotlin. This means, you cannot change individual character of a string. For example,
var myString = "Hey!" myString[0] = 'h' // Error! Strings
However, you can reassign a string variable again if you declared the variable using keyword var
. (Recommended Reading: Kotlin var Vs val)
fun main(args: Array<String>) {
var myString = "Hey!"
println("myString = $myString")
myString = "Hello!"
println("myString = $myString")
}
When you run the program, the output will be:
myString = Hey! myString = Hello!
A literal is the source code representation of a fixed value. For example, "Hey there!"
is a string literal that appears directly in a program without requiring computation (like variables).
There are two types of string literals in Kotlin:
A escaped string may have escaped characters in them. For example,
val myString = "Hey there!\n"
Here, \n
is an escape character which inserts a newline in the text where it appears.
Here is a list of escape characters supported in Kotlin:
\t
- Inserts tab\b
- Inserts backspace\n
- Inserts newline\r
- Inserts carriage return\'
- Inserts single quote character\"
- Inserts double quote character\\
- Inserts backslash\$
- Inserts dollar characterA raw string can contain newlines (not new line escape character) and arbitrary text. A raw string is delimited by a triple quote """
. For example,
fun main(args: Array<String>) {
val myString = """
for (character in "Hey!")
println(character)
"""
print(myString)
}
When you run the program, the output will be:
for (character in "Hey!") println(character)
You can remove the leading whitespaces of a raw string using trimMargin() function. For example,
fun main(args: Array<String>) {
println("Output without using trimMargin function:")
val myString = """
|Kotlin is interesting.
|Kotlin is sponsored and developed by JetBrains.
"""
println(myString)
println("Output using trimMargin function:\n")
println(myString.trimMargin())
}
When you run the program, the output will be:
Output without using trimMargin function: |Kotlin is interesting. |Kotlin is sponsored and developed by JetBrains. Output using trimMargin function: Kotlin is interesting. Kotlin is sponsored and developed by JetBrains.
By default, trimMargin()
function uses | as margin prefix. However, you can change it by passing a new string to this function.
fun main(args: Array<String>) {
val myString = """
!!! Kotlin is interesting.
!!! Kotlin is sponsored and developed by JetBrains.
"""
println(myString.trimMargin("!!! "))
}
When you run the program, the output will be:
Kotlin is interesting. Kotlin is sponsored and developed by JetBrains.
Kotlin has an awesome feature called string templates that allows strings to contain template expressions.
A string template expression starts with a dollar sign $
. Here are few examples:
fun main(args: Array<String>) {
val myInt = 5;
val myString = "myInt = $myInt"
println(myString)
}
When you run the program, the output will be:
myInt = 5
It is because the expression $myInt (expression starting with $ sign) inside the string is evaluated and concatenated into the string.
fun main(args: Array<String>) {
val a = 5
val b = 6
val myString = """
|${if (a > b) a else b}
"""
println("Larger number is: ${myString.trimMargin()}")
}
When you run the program, the output will be:
Larger number is: 6
Since literals in Kotlin are implemented as instances of String
class, you can use several methods and properties of this class.
length
property - returns the length of character sequence of an string.compareTo
function - compares this String (object) with the specified object. Returns 0 if the object is equal to the specfied object.get
function - returns character at the specified index.get
function as index access operator internally calls get
function.plus
function - returns a new string which is obtained by the concatenation of this string and the string passed to this function.+
operator instead of plus
function as +
operator calls plus
function under the hood.subSequence
Function - returns a new character sequence starting at the specified start and end index.
fun main(args: Array<String>) {
val s1 = "Hey there!"
val s2 = "Hey there!"
var result: String
println("Length of s1 string is ${s1.length}.")
result = if (s1.compareTo(s2) == 0) "equal" else "not equal"
println("Strings s1 and s2 are $result.")
// s1.get(2) is equivalent to s1[2]
println("Third character is ${s1.get(2)}.")
result = s1.plus(" How are you?") // result = s1 + " How are you?"
println("result = $result")
println("Substring is \"${s1.subSequence(4, 7)}\"")
}
When you run the program, the output is:
Length of s1 string is 10. Strings s1 and s2 are equal. Third character is y. result = Hey there! How are you? Substring is "the"
Visit Kotlin String class for more information on extension properties, extension, functions and constructors.
It takes a lot of effort and cost to maintain Programiz. We would be grateful if you support us by either:
Disabling AdBlock on Programiz. We do not use intrusive ads.
or
Donate on Paypal