Szukaj…


Elementy sznurka

Elementy ciągu to znaki, do których można uzyskać dostęp poprzez string[index] operacji indeksowania string[index] .

val str = "Hello, World!"
println(str[1]) // Prints e

Elementy ciągów można iterować za pomocą pętli for.

for (c in str) {
    println(c)
}

Literały smyczkowe

Kotlin ma dwa rodzaje literałów łańcuchowych:

  • Ciąg znaków ucieczki
  • Surowy sznurek

Ciąg znaków Escaped obsługuje znaki specjalne, unikając ich. Ucieczka odbywa się za pomocą odwrotnego ukośnika. Obsługiwane są następujące sekwencje specjalne: \t , \b , \n , \r , \' , \" , \\ i \$ . Aby zakodować dowolny inny znak, użyj składni sekwencji unikowej Unicode: \uFF00 .

val s = "Hello, world!\n"

Nieprzetworzony ciąg rozdzielany potrójnym cytatem """ nie zawiera znaków zmiany znaczenia i może zawierać znaki nowej linii oraz wszelkie inne znaki

val text = """
    for (c in "foo")
        print(c)
"""

Wiodące białe znaki można usunąć za pomocą funkcji trimMargin () .

val text = """
    |Tell me and I forget.
    |Teach me and I remember.
    |Involve me and I learn.
    |(Benjamin Franklin)
    """.trimMargin()

Domyślny prefiks marginesu to znak potoku | , można to ustawić jako parametr trimMargin; np. trimMargin(">") .

Szablony ciągów

Zarówno łańcuchy ucieczki, jak i łańcuchy surowe mogą zawierać wyrażenia szablonów. Wyrażenie szablonu jest fragmentem kodu, który jest analizowany, a jego wynik jest łączony w łańcuch. Zaczyna się od znaku dolara $ i składa się z nazwy zmiennej:

val i = 10
val s = "i = $i" // evaluates to "i = 10"

Lub dowolne wyrażenie w nawiasach klamrowych:

val s = "abc"
val str = "$s.length is ${s.length}" // evaluates to "abc.length is 3"

Aby dołączyć dosłowny znak dolara do ciągu, użyj znaku ukośnika odwrotnego:

val str = "\$foo" // evaluates to "$foo"

Wyjątkiem są ciągi surowe, które nie obsługują ucieczki. W nieprzetworzonych ciągach znaków można użyć następującej składni do przedstawienia znaku dolara.

val price = """
${'$'}9.99
"""

Równość ciągów

W Kotlinie ciągi są porównywane z operatorem == , który sprawdza ich strukturalną równość.

val str1 = "Hello, World!"
val str2 = "Hello," + " World!"
println(str1 == str2) // Prints true

Równość referencyjna jest sprawdzana za pomocą operatora === .

val str1 = """
    |Hello, World!
    """.trimMargin()

val str2 = """
    #Hello, World!
    """.trimMargin("#")

val str3 = str1

println(str1 == str2) // Prints true
println(str1 === str2) // Prints false
println(str1 === str3) // Prints true


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow