Kotlin 文字列

文字列はテキストを格納するために使用されます。

文字列はダブルクォーテーションで囲まれた文字の集まりです。

var greeting = "Hello"

Javaとは異なり、変数が文字列であることを指定する必要はありません。Kotlinはダブルクォーテーションのおかげで、上記の例でのgreeting変数が文字列であると理解します。

ただし、他のデータ型と同様に、指定したい場合は型を明示することもできます。

var greeting: String = "Hello"

注意:値を後から代入したい場合は、変数を宣言する際に型を指定する必要があります。

var name: String
name = "John"
println(name)

これは問題なく動作します。

var name
name = "John"
println(name)

これはエラーを生成します。

文字列へのアクセス

文字列の文字(要素)にアクセスするには、角括弧内のインデックス番号を参照する必要があります。

文字列のインデックスは0から始まります。以下の例では、txtの最初と3番目の要素にアクセスしています。

var txt = "Hello World"
println(txt[0]) // 最初の要素 (H)
println(txt[2]) // 3番目の要素 (l)
[0]は最初の要素、[1]は2番目の要素、[2]は3番目の要素です。

文字列の長さ

Kotlinの文字列はオブジェクトで、特定の文字列変数の後にドット(.)を記述することで、プロパティや関数を利用して文字列に対する操作を行うことができます。例えば、文字列の長さはlengthプロパティで取得できます。

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
println("文字列txtの長さは: " + txt.length)

文字列の関数

文字列には多くの関数があります。例えば、toUpperCase()toLowerCase()があります。

var txt = "Hello World"
println(txt.toUpperCase())   // 出力: "HELLO WORLD"
println(txt.toLowerCase())   // 出力: "hello world"

文字列の比較

compareTo(string)関数は2つの文字列を比較し、両方が等しい場合は0を返します。

var txt1 = "Hello World"
var txt2 = "Hello World"
println(txt1.compareTo(txt2))  // 出力: 0(等しい)

文字列内の文字列を検索

indexOf()関数は文字列内で指定されたテキストの最初の出現位置(インデックス)を返します(空白も含む)。

var txt = "Please locate where 'locate' occurs!"
println(txt.indexOf("locate"))  // 出力: 7

Kotlinは位置をゼロからカウントします。

0が最初の位置、1が2番目の位置、2が3番目の位置です。

文字列内の引用符

文字列内で引用符を使用するには、単一引用符(’)を使用します。

var txt1 = "It's alright"
var txt2 = "That's great"

文字列の連結

文字列同士を加算するために+演算子を使用できます。これを文字列の連結と呼びます。

var firstName = "John"
var lastName = "Doe"
println(firstName + " " + lastName)

ここではfirstNamelastNameの間に空のテキスト(” “)を追加してスペースを作っています。

また、plus()関数を使用して2つの文字列を連結することもできます。

var firstName = "John "
var lastName = "Doe"
println(firstName.plus(lastName))

文字列テンプレート/補間

連結の代わりに、「文字列テンプレート」を使用することもできます。これは文字列内に変数や式を簡単に追加する方法です。

変数を参照するには、$シンボルを使用します。

var firstName = "John"
var lastName = "Doe"
println("私の名前は $firstName $lastName です")

「文字列テンプレート」はKotlinの人気機能で、コード量を減らすことができます。例えば、連結の例のようにfirstNamelastNameの間に空白を指定する必要がありません。