W tym artykule za pomocą przykładów dowiesz się o łańcuchach Kotlin, szablonach ciągów oraz kilku powszechnie używanych właściwościach i funkcjach ciągów.
Kotlin String
Łańcuchy to ciąg znaków. Na przykład "Hello there!"to literał ciągu.
W Kotlinie wszystkie łańcuchy są obiektami Stringklasy. Oznacza to, że literały łańcuchowe, takie jak, "Hello there!"są implementowane jako wystąpienia tej klasy.
Jak stworzyć zmienną typu String?
Oto jak możesz zdefiniować Stringzmienną w Kotlinie. Na przykład,
val myString = "Hej!"
Tutaj myString jest zmienną typu String.
Możesz zadeklarować zmienną typu Stringi określić jej typ w jednej instrukcji, a następnie zainicjować zmienną w innej instrukcji w dalszej części programu.
val myString: String… myString = "Howdy"
Jak uzyskać dostęp do znaków ciągu?
Aby uzyskać dostęp do elementów (znaku) ciągu, używany jest operator dostępu do indeksu. Na przykład,
val myString = "Hej!" val item = myString (2)
Tutaj zmienna item zawiera y, trzeci znak ciągu myString. To dlatego, że indeksowanie w Kotlinie zaczyna się od 0, a nie od 1.
val myString = "Hej!" var item: Char item = myString (0) // pozycja zawiera 'H' item = myString (9) // pozycja zawiera '!' item = myString (10) // Błąd! Indeks ciągu jest poza zakresem item = myString (-1) // Błąd! Indeks ciągu jest poza zakresem
Przykład: Iteracja przez String
Jeśli potrzebujesz iterować po elementach łańcucha, możesz to łatwo zrobić, używając pętli for.
fun main(args: Array) ( val myString = "Hey!" for (item in myString) ( println(item) ) )
Po uruchomieniu programu wynik będzie następujący:
H e y !
Ciągi w Kotlinie są niezmienne
Podobnie jak w Javie, w Kotlinie ciągi znaków są niezmienne. Oznacza to, że nie możesz zmienić pojedynczego znaku w ciągu. Na przykład,
var myString = "Hej!" myString (0) = 'h' // Błąd! Smyczki
Możesz jednak ponownie przypisać zmienną łańcuchową, jeśli zadeklarujesz zmienną za pomocą słowa kluczowego var. ( Zalecana literatura : Kotlin var Vs val)
Przykład: ponowne przypisanie zmiennej łańcuchowej.
fun main(args: Array) ( var myString = "Hey!" println("myString = $myString") myString = "Hello!" println("myString = $myString") )
Po uruchomieniu programu wynik będzie następujący:
myString = Hej! myString = Witaj!
Literały strunowe
Literał to reprezentacja stałej wartości w kodzie źródłowym. Na przykład "Hey there!"to literał łańcuchowy, który pojawia się bezpośrednio w programie bez konieczności obliczania (podobnie jak zmienne).
W Kotlinie istnieją dwa typy literałów ciągów:
1. Escaped string
Ciąg znaków ze zmianą znaczenia może zawierać znaki ucieczki. Na przykład,
val myString = "Hej! n"
Tutaj jest znak ucieczki, który wstawia nowy wiersz w tekście, w którym się pojawia.
Oto lista znaków ucieczki obsługiwanych w Kotlin:
- Zakładka Inserts- Wstawia backspace- Wstawia znak nowej linii- Wstawia powrót karetki\'- Wstawia pojedynczy znak cudzysłowu"- Wstawia znak podwójnego cudzysłowu\- Wstawia ukośnik odwrotny$- Wstawia znak dolara
2. Surowy ciąg
Nieprzetworzony ciąg może zawierać znaki nowej linii (nie znak zmiany znaczenia nowego wiersza) i dowolny tekst. Nieprzetworzony ciąg jest oddzielony potrójnym cudzysłowem """. Na przykład,
fun main(args: Array) ( val myString = """ for (character in "Hey!") println(character) """ print(myString) )
Po uruchomieniu programu wynik będzie następujący:
for (znak w "Hej!") println (znak)
Możesz usunąć wiodące białe znaki z nieprzetworzonego ciągu za pomocą funkcji trimMargin (). Na przykład,
Przykład: drukowanie nieprzetworzonego ciągu
fun main(args: Array) ( 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:") println(myString.trimMargin()) )
Po uruchomieniu programu wynik będzie następujący:
Wyjście bez użycia funkcji trimMargin: | Kotlin jest interesujący. | Kotlin jest sponsorowany i rozwijany przez JetBrains. Wyjście za pomocą funkcji trimMargin: Kotlin jest interesujący. Kotlin jest sponsorowany i rozwijany przez JetBrains.
Domyślnie trimMargin()funkcja używa | jako przedrostek marginesu. Możesz go jednak zmienić, przekazując nowy ciąg do tej funkcji.
Przykład: trimMargin () with Argument
fun main(args: Array) ( val myString = """ !!! Kotlin is interesting. !!! Kotlin is sponsored and developed by JetBrains. """ println(myString.trimMargin("!!! ")) )
Po uruchomieniu programu wynik będzie następujący:
Kotlin jest interesujący. Kotlin jest sponsorowany i rozwijany przez JetBrains.
Kotlin String Templates
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:
Example: Kotlin String Template
fun main(args: Array) ( 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.
Example: String Template With Raw String
fun main(args: Array) ( 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
Few String Properties and Functions
Since literals in Kotlin are implemented as instances of String class, you can use several methods and properties of this class.
lengthproperty - returns the length of character sequence of an string.compareTofunction - compares this String (object) with the specified object. Returns 0 if the object is equal to the specfied object.getfunction - returns character at the specified index.
You can use index access operator instead ofgetfunction as index access operator internally callsgetfunction.plusfunction - returns a new string which is obtained by the concatenation of this string and the string passed to this function.
You can use+operator instead ofplusfunction as+operator callsplusfunction under the hood.subSequenceFunction - returns a new character sequence starting at the specified start and end index.
Example: String Properties and Function
fun main(args: Array) ( 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:
Długość łańcucha s1 wynosi 10. Łańcuchy s1 i s2 są równe. Trzeci znak to y. wynik = Hej! Jak się masz? Podciąg to „the”
Odwiedź klasę Kotlin String, aby uzyskać więcej informacji na temat właściwości rozszerzenia, rozszerzenia, funkcji i konstruktorów.








