Szablony ciągów i ciągów Kotlin (z przykładami)

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.

  • 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.
    You can use index access operator instead of 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.
    You can use + 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.

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.

Interesujące artykuły...