【Scala】Scala ~ 基本編 / 文字列 ~

■ はじめに

Scala の 文字列について、徐々にノウハウを書き溜めておく

目次

【0】データ変換
【1】ゼロ埋め (Zero padding)
【2】前方一致・後方一致
【3】空・空文字じゃないを判定
【4】ホワイトスペース除去
【5】文字列置換
【6】mkString
【7】文字列の補間 (String interpolation)
 1)s 補間子(The s Interpolator (s-Strings))
 2)f 補間子(The f Interpolator (f-Strings))

【0】データ変換

// to[データ型]

"true".toBoolean

"false".toBooleanOption 
// Option[Boolean] = Some(false)

"100".toInt

"100".toIntOption
// Option[Int] = Some(100)

参考文献
https://qiita.com/ka2kama/items/004ec6baf049683938c3

【1】ゼロ埋め (Zero padding)

"%07d".format(123)
// 0000123

参考文献
https://stackoverflow.com/questions/8131291/how-to-convert-an-int-to-a-string-of-a-given-length-with-leading-zeros-to-align

【2】前方一致・後方一致

// 前方一致:startsWith
val isS3 = "s3://your-bucket/bbb/abc.sql".startsWith("s3://")

// 後方一致:endsWith
val isSqlFile = "s3://your-bucket/bbb/abc.sql".endsWith(".sql")

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

【3】空・空文字じゃないを判定

val isEmpty = "".isEmpty()
val isNotEmpty = "".nonEmpty()

参考文献
http://www.mwsoft.jp/programming/scala/scala_string.html

【4】ホワイトスペース除去

val trimmedStr = "  test  ".trim

// 前方除去
val trimmedStrLeading = "  test  ".stripLeading

// 後方除去
val trimmedStrTrailing = "  test  ".stripTrailing

stripメソッドで文字列の前後の全角空白を除去する|Scalapedia

【5】文字列置換

* 基本的なことは、以下を参照。

replaceメソッドなど、文字列を置換する方法を紹介|Scalapedia

replace/replaceAllの注意点

* java.lang.Stringのreplace/replaceAllは、正規表現として解釈するので
 正規表現に関わる文字はエスケープしないといけない

// var result = "Hi, ${{name}}!!".replaceAll("${{name}}", "Mike") // Error!!
var result = "Hi, ${{name}}!!".replaceAll("\\$\\{\\{name\\}\\}", "Mike")

解決案

// Scala v2.8から「replaceAllLiterally」で置き換え可能
var result = "Hi, ${{name}}!!".replaceAllLiterally("${{name}}", "Mike")

http://blog.mwsoft.jp/article/45251515.html

【6】mkString

val result1 = List(1, 2, 3, 4, 5).mkString
val result2 = List(1, 2, 3, 4, 5).mkString(",")
val result3 = List(1, 2, 3, 4, 5).mkString("[", ",", "]")

参考文献
https://qiita.com/tomu28/items/43d4dad8bd37227e7322#mkstring%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0

【7】文字列の補間 (String interpolation)

1)s 補間子(The s Interpolator (s-Strings))

https://docs.scala-lang.org/ja/overviews/core/string-interpolation.html#s-%E8%A3%9C%E9%96%93%E5%AD%90

val name = "James"
println(s"Hello, $name")  // Hello, James

2)f 補間子(The f Interpolator (f-Strings))

https://docs.scala-lang.org/ja/overviews/core/string-interpolation.html#f-%E8%A3%9C%E9%96%93%E5%AD%90

val height = 1.9d
val name = "James"
println(f"$name%s is $height%2.2f meters tall")

関連記事

Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331
Scala ~ 基本編 / コレクション ~
https://dk521123.hatenablog.com/entry/2023/03/13/000345
Scala ~ ファイル名・パスの扱い ~
https://dk521123.hatenablog.com/entry/2023/03/11/000000
Scala ~ ファイルの読み書き ~
https://dk521123.hatenablog.com/entry/2023/04/07/000000