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) |