Scala 文字列の共通関数
Scala の文字列は String 型であり、実際には Java にありますjava.lang.String
。よく使用される機能は次のとおりです。
1. 部分文字列-部分文字列
substring()
メソッドは文字列の部分文字列を返します。
substring()
メソッドには次の 2 つの形式があります。
substring(beginIndex: Int)
beginIndex は開始インデックスであり、この形式は beginIndex から文字列の末尾までの部分文字列を取得します。substring(beginIndex: Int, endIndex: Int)
beginIndex は開始インデックス、endIndex は終了インデックスです。この形式は、beginIndex (beginIndex を含む) から endIndex (endIndex を除く) までの部分文字列を取得します。
ルーキー チュートリアルの次の図は、わかりやすい例です。
コード例は次のとおりです。
val str1 = "This is text"
println("返回值 :"+str1.substring(3))
println("返回值 :"+str1.substring(2, 7))
println("返回值 :"+str1.substring(2, str1.length))
操作結果:
返回值 :s is text
返回值 :is is
返回值 :is is text
注: endIndex が文字列の範囲を超える場合、String index out of range: 20
エラーが報告されます。
2. 文字列の分割 - 分割
split()
このメソッドは、指定された正規表現との一致に基づいて文字列を分割し、結果は になりますArray<String>
。
注: .
、、、などのエスケープ文字を追加する必要$
があり|
ます。注: 複数の区切り文字をハイフンとして。*
\\
|
split()
メソッドには次の 2 つの形式があります。
split(regex: String)
regex は正規表現の区切り文字です。split(regex: String, limit: Int)
regex は正規表現の区切り文字、limit は分割数です。つまり、最初の制限区切り文字のみが分割されます。
サンプルコードは次のとおりです。
val str2 = "Welcome-to-here"
println("- 分隔符返回值 :")
str2.split("-").foreach(println)
System.out.println("- 分隔符设置分割份数返回值 :")
str2.split("-", 2).foreach(println)
val str3 = "java.lang.String"
System.out.println("转义字符返回值 :")
str3.split("\\.", 3).foreach(println)
val str4 = "acount=? and uu =? or n=?"
println("多个分隔符返回值 :")
str4.split("and|or").foreach(println)
操作結果:
- 分隔符返回值 :
Welcome
to
here
- 分隔符设置分割份数返回值 :
Welcome
to-here
转义字符返回值 :
java
lang
String
多个分隔符返回值 :
acount=?
uu =?
n=?
3. 先頭と末尾のスペースを削除します -trim
trim()
このメソッドは、文字列の先頭と末尾の空白文字 (改行文字を含む) を削除するために使用されます。このメソッドには受信パラメーターがないため、括弧は省略できます。例えば:
val str3 = "\n abc 12 \n "
println(str3.trim)
println("str3.trim length:"+str3.trim.length)
println(str3)
println("str3 length:"+str3.length)
操作結果:
abc 12
str3.trim length:6
abc 12
str3 length:11
4. 数値との変換
型に応じて、文字列から数値への変換は次の方法で行うことができます。
- Int - 整数
Integer.parseInt()
- 長整数 - 長整数
java.lang.Long.parseLong()
- Float - 浮動小数点型
java.lang.Float.parseFloat()
- Double - 倍精度浮動小数点型
java.lang.Double.parseDouble()
サンプルコードは次のとおりです。
val str_int: String = "23"
val str_float: String = "233.3"
val my_int: Int = Integer.parseInt(str_int)
val my_long: Long = java.lang.Long.parseLong(str_int)
val my_float: Float = java.lang.Float.parseFloat(str_float)
val my_double: Double = java.lang.Double.parseDouble(str_float)
println(my_int)
println(my_long)
println(my_float)
println(my_double)
操作結果:
23
23
233.3
233.3
文字列の形式が正しくない場合はjava.lang.NumberFormatException
例外がスローされるtry/catch
ことに注意してください。これは対策として考慮できます。
var odd_value: Long = 0L
try {
odd_value = java.lang.Long.parseLong(str_float)
} catch {
case e: NumberFormatException => {
e.printStackTrace()
println("Wrong format")
}
}
完全なコード
StringTest.scala
package com.xxx
object StringTest {
def main(args: Array[String]): Unit = {
val str1 = "This is text"
println("返回值 :"+str1.substring(3))
println("返回值 :"+str1.substring(2, 7))
println("返回值 :"+str1.substring(2, str1.length))
val str2 = "Welcome-to-here"
println("- 分隔符返回值 :")
str2.split("-").foreach(println)
System.out.println("- 分隔符设置分割份数返回值 :")
str2.split("-", 2).foreach(println)
val str3 = "java.lang.String"
System.out.println("转义字符返回值 :")
str3.split("\\.", 3).foreach(println)
val str4 = "acount=? and uu =? or n=?"
println("多个分隔符返回值 :")
str4.split("and|or").foreach(println)
val str5 = "\n abc 12 \n "
println(str5.trim)
println("str5.trim length:"+str5.trim.length)
println(str5)
println("str5 length:"+str5.length)
val str_int: String = "23"
val str_float: String = "233.3"
val my_int: Int = Integer.parseInt(str_int)
val my_long: Long = java.lang.Long.parseLong(str_int)
val my_float: Float = java.lang.Float.parseFloat(str_float)
val my_double: Double = java.lang.Double.parseDouble(str_float)
println(my_int)
println(my_long)
println(my_float)
println(my_double)
var odd_value: Long = 0L
try {
odd_value = java.lang.Long.parseLong(str_float)
} catch {
case e: NumberFormatException => {
e.printStackTrace()
println("Wrong format")
}
}
}
}