文字列が特定の文字列で始まるか・終わるかを調べる方法

Scala 3 (Dotty 0.26.0-RC1) 2.13.3 2.12.12
最終更新:2020年7月6日

[AD] scalapediaでは記事作成ボランティアを募集しています

この記事では、Scalaの文字列が特定の文字列で始まるのか、あるいは終わるのかについて調べる方法を解説します。

startsWithメソッドやendsWithメソッドを使うと簡単に調べることができます。

特定の文字列で始まるか調べるにはstartsWithメソッド

StringstartsWithメソッドを使うと、文字列が特定の文字列で始まるかどうかを調べることができます。

Java
public boolean startsWith(String prefix)

startsWithメソッドは、確かめたい文字列(String)を引数に取り、有無をBooleanで返します。
Scalaに読み替えると以下のようになります。

Scala
def startsWith(prefix: String): Boolean

さて、それでは実際に文字列が特定の文字列で始まるかどうかを調べてみましょう。

まず以下のような文字列を用意します。

val title = "Scala逆引き解説 Scalapedia"

タイトルが「Scala」という文字列で始まっていればtrueが返ってくるはずです。

println(title.startsWith("Scala"))

実行結果は以下のようになります。

true

期待通り、trueが返ってきました。

特定の位置から特定の文字列が始まるかどうかもstartsWithメソッド

startsWithメソッドでは、先頭からだけでなく特定の位置以降に指定した文字列が存在するかどうかを調べることができます。

確かめたい文字列に加えて、開始したい位置のインデックスを引数に渡します。

Java
public boolean startsWith(String prefix, int toffset)

Scalaに読み替えるとこうなります。

Scala
def 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が返ってきていることがわかります。

特定の文字列で終わるか調べるにはendsWithメソッド

逆に、StringendsWithメソッドを使うと文字列が特定の文字列で終わるかどうか調べることができます。

Java
public boolean endsWith(String suffix)
Scala
def endsWith(suffix: String): Boolean

先ほどと同じ文字列に対して調べてみましょう。

「Scala」や「pedia」で終わるかどうかを調べてみます。

val title = "Scala逆引き解説 Scalapedia"
println(title.endsWith("Scala")) println(title.endsWith("pedia"))

結果は以下のようになります。

false true

「Scala」ではなく「pedia」で終わるということがわかりますね。

可変長文字列の場合も同じ

StringBuilderの場合も同様に、文字列が特定の文字列で始まるか・終わるかを調べることができます。

StringBuilderのstartsWithメソッドを使う

StringBuilderstartsWithメソッドを使うと、文字列が特定の文字列で始まるかどうかを調べることができます。

StringstartsWithメソッドと同様に、第2引数のoffsetを指定することもできます。

Scala
def 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

StringBuilderのendsWithメソッドを使う

StringBuilderendsWithメソッドを使うと、文字列が特定の文字列で終わるかを調べることができます。

Scala
def 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

サイト内検索


カテゴリ「文字列処理」の記事

文字列をエスケープしたり復元したりする方法(Apache Commons Text) JavaとScalaのString/StringBuilder/StringBuffer使い分け事情 文字列を分割する方法(split・splitAt・linesIterator・linesWithSeparatorsメソッド) trimメソッドで文字列の前後の空白を除去する 文字列が一致するか比較する方法/大文字・小文字を区別せずに比較する方法 特定の文字の文字コード(コード・ポイント)を取得する replaceメソッドなど、文字列を置換する方法を紹介 文字列の先頭や末尾を、取得したり切り落としたりする方法 containsメソッドでStringに特定の文字列が含まれるか調べる方法 数値を文字列に変換する方法 stripメソッドで文字列の前後の全角空白を除去する 文字列を数値に変換するには?to○○メソッドと注意点について 文字列を辞書的に比較する方法/大文字・小文字を区別せずに比較する方法 文字列が特定の文字列で始まるか・終わるかを調べる方法 【getBytes&size】文字列のバイト長を取得する方法 substringでStringを切り取り、部分文字列を抽出する方法 StringOpsとWrappedStringの違いは? 文字列を連結するには?+演算子やString interpolationの使い方 文字列の大文字へ・小文字へ変換する方法 文字列を逆順にする方法 文字列の文字コード(文字セット)を変換する方法 文字列の長さを取得する方法:lengthとcodePointCountの使い分け 文字列をURLエンコード・デコードする方法 文字列が正規表現に合致するか調べる方法 この文字の位置はどこ?文字列のインデックスを取得する方法 文字列をバイト列に、またはバイト列を文字列に変換する方法

カテゴリ「文字列処理」の記事

文字列をエスケープしたり復元したりする方法(Apache Commons Text) JavaとScalaのString/StringBuilder/StringBuffer使い分け事情 文字列を分割する方法(split・splitAt・linesIterator・linesWithSeparatorsメソッド) trimメソッドで文字列の前後の空白を除去する 文字列が一致するか比較する方法/大文字・小文字を区別せずに比較する方法 特定の文字の文字コード(コード・ポイント)を取得する replaceメソッドなど、文字列を置換する方法を紹介 文字列の先頭や末尾を、取得したり切り落としたりする方法 containsメソッドでStringに特定の文字列が含まれるか調べる方法 数値を文字列に変換する方法 stripメソッドで文字列の前後の全角空白を除去する 文字列を数値に変換するには?to○○メソッドと注意点について 文字列を辞書的に比較する方法/大文字・小文字を区別せずに比較する方法 文字列が特定の文字列で始まるか・終わるかを調べる方法 【getBytes&size】文字列のバイト長を取得する方法 substringでStringを切り取り、部分文字列を抽出する方法 StringOpsとWrappedStringの違いは? 文字列を連結するには?+演算子やString interpolationの使い方 文字列の大文字へ・小文字へ変換する方法 文字列を逆順にする方法 文字列の文字コード(文字セット)を変換する方法 文字列の長さを取得する方法:lengthとcodePointCountの使い分け 文字列をURLエンコード・デコードする方法 文字列が正規表現に合致するか調べる方法 この文字の位置はどこ?文字列のインデックスを取得する方法 文字列をバイト列に、またはバイト列を文字列に変換する方法