254 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			254 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Strings
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Strings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								A string is a basic data type in a programming language. Strings are represented by the type `String`. Strings are immutable. Kotlin has a rich API for working with strings.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Basic Usage
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Declaration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								// Explicit type declaration
							 | 
						||
| 
								 | 
							
								var firstName : String = "Elon"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// or Implicit type declaration and will still compile
							 | 
						||
| 
								 | 
							
								val lastName = "Musk"
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In addition, notice the usage of `val` variable type, here is how it behaves
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								firstName = "Mark" // can be changed
							 | 
						||
| 
								 | 
							
								lastName = "Zuckerberg" // cannot be changed
							 | 
						||
| 
								 | 
							
								lastName = 12 // Error: type mismatch
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### String Concatenation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Shown in the code snippet, just like Java, appending `Int` to
							 | 
						||
| 
								 | 
							
								`String` will result to a `String` output
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = "abc" + 1
							 | 
						||
| 
								 | 
							
								println(str + "def")
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								abc1def
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Even without explicitly converting `Int` value 1 to `String` object first, the resulting output is still a `String`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### String with Multiple Lines
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Programmers can declare `String` variables with multiple lines by using triple quotes instead of double quotes
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = """
							 | 
						||
| 
								 | 
							
								        This is line 1
							 | 
						||
| 
								 | 
							
								        This is line 2
							 | 
						||
| 
								 | 
							
								        This is line 3
							 | 
						||
| 
								 | 
							
								        """
							 | 
						||
| 
								 | 
							
								println(str)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								        This is line 1
							 | 
						||
| 
								 | 
							
								        This is line 2
							 | 
						||
| 
								 | 
							
								        This is line 3
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								or with `.trimIndent()`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The use of `trimIndent()` will additionally help to provide a clean output format by removing excess and unnecessary indentions on each line. Examine the code snippet below:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = """
							 | 
						||
| 
								 | 
							
								        This is line 1
							 | 
						||
| 
								 | 
							
								        This is line 2
							 | 
						||
| 
								 | 
							
								        This is line 3
							 | 
						||
| 
								 | 
							
								        """.trimIndent()
							 | 
						||
| 
								 | 
							
								println(str)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								This is line 1
							 | 
						||
| 
								 | 
							
								This is line 2
							 | 
						||
| 
								 | 
							
								This is line 3
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Accessing Characters of a String
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Index Access
							 | 
						||
| 
								 | 
							
								Programmers can access elements (characters) of a string using index access operator:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = "Example"
							 | 
						||
| 
								 | 
							
								println(str[2])
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								It's just like accessing an element from an array, you get:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = "Example"
							 | 
						||
| 
								 | 
							
								println(str[9]) // Error: index out of bounds
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Iterate through a String
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Elements of a string are characters that can be accessed by the indexing operation: `s[i]`. 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = "Example"
							 | 
						||
| 
								 | 
							
								for (c in str) {
							 | 
						||
| 
								 | 
							
								    println(c)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								E
							 | 
						||
| 
								 | 
							
								x
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								m
							 | 
						||
| 
								 | 
							
								p
							 | 
						||
| 
								 | 
							
								l
							 | 
						||
| 
								 | 
							
								e
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Immutability of a String
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Just like Java, you cannot change individual elements of a `String`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = "Example"
							 | 
						||
| 
								 | 
							
								str[2] = "b" // Error
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Re-assigning String values
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = "Example"
							 | 
						||
| 
								 | 
							
								println(str)
							 | 
						||
| 
								 | 
							
								str = "Example was changed"
							 | 
						||
| 
								 | 
							
								println(str)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								Example
							 | 
						||
| 
								 | 
							
								Example was changed
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### String Properties
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Determining length of a String
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = "Example"
							 | 
						||
| 
								 | 
							
								println(str.length)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### String Functions
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								These are some of the common `String` functions available from the current Kotlin version
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### compareTo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Compares this object with the specified object for order. Returns zero if this object is equal to the specified other object, a negative number if it's less than other, or a positive number if it's greater than other.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = "Example"
							 | 
						||
| 
								 | 
							
								var str2 = "Example123"
							 | 
						||
| 
								 | 
							
								var str3 = "Example12345"
							 | 
						||
| 
								 | 
							
								println(str.compareTo(str2))
							 | 
						||
| 
								 | 
							
								println(str.compareTo(str3))
							 | 
						||
| 
								 | 
							
								println(str3.compareTo(str))
							 | 
						||
| 
								 | 
							
								println(str.compareTo("Example"))
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								-3
							 | 
						||
| 
								 | 
							
								-5
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								0 # Equal
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### equals
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Indicates whether a `String` object is exactly equal to another `String` object
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								var str = "Example"
							 | 
						||
| 
								 | 
							
								var str2 = "Example2"
							 | 
						||
| 
								 | 
							
								println(str.equals("Example"))
							 | 
						||
| 
								 | 
							
								println(str2.equals("Example"))
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								true
							 | 
						||
| 
								 | 
							
								false
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### get
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Returns the character at the specified index in this character sequence.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``` kotlin
							 | 
						||
| 
								 | 
							
								var str = "Example"
							 | 
						||
| 
								 | 
							
								println(str.get(3))
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								m
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### toString
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Returns a string representation of the object.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								println(9.toString() + 10)
							 | 
						||
| 
								 | 
							
								println(9 + 10)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Output:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								"910"
							 | 
						||
| 
								 | 
							
								19
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Resources
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* [Kotlin Basic Types](https://kotlinlang.org/docs/reference/basic-types.html)
							 | 
						||
| 
								 | 
							
								* [Kotlin String Reference](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)
							 |