[AD] Scalaアプリケーションの開発・保守は合同会社ミルクソフトにお任せください
この記事では、Scalaの文字列が特定の文字列で始まるのか、あるいは終わるのかについて調べる方法を解説します。
startsWith
メソッドやendsWith
メソッドを使うと簡単に調べることができます。
特定の文字列で始まるか調べるにはstartsWith
メソッド
String
のstartsWith
メソッドを使うと、文字列が特定の文字列で始まるかどうかを調べることができます。
Javapublic boolean startsWith(String prefix)
startsWith
メソッドは、確かめたい文字列(String
)を引数に取り、有無をBoolean
で返します。
Scalaに読み替えると以下のようになります。
Scaladef startsWith(prefix: String): Boolean
さて、それでは実際に文字列が特定の文字列で始まるかどうかを調べてみましょう。
まず以下のような文字列を用意します。
val title = "Scala逆引き解説 Scalapedia"
タイトルが「Scala」という文字列で始まっていればtrue
が返ってくるはずです。
println(title.startsWith("Scala"))
実行結果は以下のようになります。
true
期待通り、true
が返ってきました。
java.lang.String#startsWith(java.lang.String)
特定の位置から特定の文字列が始まるかどうかもstartsWith
メソッド
startsWith
メソッドでは、先頭からだけでなく特定の位置以降に指定した文字列が存在するかどうかを調べることができます。
確かめたい文字列に加えて、開始したい位置のインデックスを引数に渡します。
Javapublic boolean startsWith(String prefix, int toffset)
Scalaに読み替えるとこうなります。
Scaladef startsWith(prefix: String, toffset: Int): Boolean
先ほどと同じ文字列に対して調べてみましょう。
「Scala」という文字列が文字列中の特定の位置から始まるかどうかを調べてみます。
val title = "Scala逆引き解説 Scalapedia"
println(title.startsWith("Scala", 5)) println(title.startsWith("Scala", 11))
結果は以下のようになります。
false true
指定した位置から始まっている場合にtrue
、そうでない場合にfalse
が返ってきていることがわかります。
java.lang.String#startsWith(java.lang.String, int)
特定の文字列で終わるか調べるにはendsWith
メソッド
逆に、String
のendsWith
メソッドを使うと文字列が特定の文字列で終わるかどうか調べることができます。
Javapublic boolean endsWith(String suffix)
Scaladef endsWith(suffix: String): Boolean
先ほどと同じ文字列に対して調べてみましょう。
「Scala」や「pedia」で終わるかどうかを調べてみます。
val title = "Scala逆引き解説 Scalapedia"
println(title.endsWith("Scala")) println(title.endsWith("pedia"))
結果は以下のようになります。
false true
「Scala」ではなく「pedia」で終わるということがわかりますね。
java.lang.String#endsWith(java.lang.String)
可変長文字列の場合も同じ
StringBuilderの場合も同様に、文字列が特定の文字列で始まるか・終わるかを調べることができます。
StringBuilderのstartsWith
メソッドを使う
StringBuilder
のstartsWith
メソッドを使うと、文字列が特定の文字列で始まるかどうかを調べることができます。
String
のstartsWith
メソッドと同様に、第2引数のoffset
を指定することもできます。
Scaladef startsWith[B >: Char](that: IterableOnce[B], offset: Int = 0): Boolean
まずはStringBuilder
を作成します。
内容自体はString
の例と同じです。
val titleBuilder = new StringBuilder("Scala逆引き解説 Scalapedia")
startsWith
メソッドを使って特定の文字列で始まるかどうかを確かめてみましょう。
また、特定の位置から指定の文字列が始まるかどうかも調べてみましょう。
println(title.startsWith("Scala")) println(title.startsWith("Scala", 11))
結果は以下のとおりです。
どちらもtrue
となります。
true true
scala.collection.mutable.StringBuilder#startsWith
StringBuilderのendsWith
メソッドを使う
StringBuilder
のendsWith
メソッドを使うと、文字列が特定の文字列で終わるかを調べることができます。
Scaladef endsWith[B >: Char](that: collection.Iterable[B]): Boolean
サンプルコードと実行結果は以下のとおりです。
val titleBuilder = new StringBuilder("Scala逆引き解説 Scalapedia")
println(title.endsWith("Scala")) println(title.endsWith("pedia"))
期待通り、「Scala」ではなく「pedia」で終わるということがわかります。
false true
scala.collection.mutable.StringBuilder#endsWith