Fonctions communes de la chaîne Scala
La chaîne dans Scala est de type String, qui est en fait en Java java.lang.String
. Ses fonctions couramment utilisées sont les suivantes :
1. Sous-chaîne-sous-chaîne
substring()
La méthode renvoie une sous-chaîne d'une chaîne.
substring()
Les méthodes ont les deux formes suivantes :
substring(beginIndex: Int)
beginIndex est l'index de début et ce formulaire obtient la sous-chaîne de beginIndex à la fin de la chaîne.substring(beginIndex: Int, endIndex: Int)
beginIndex est l'index de début et endIndex est l'index de fin. Ce formulaire obtient la sous-chaîne de beginIndex (y compris beginIndex) à endIndex (hors endIndex).
Le schéma suivant du didacticiel débutant en est une bonne illustration :
l'exemple de code est le suivant :
val str1 = "This is text"
println("返回值 :"+str1.substring(3))
println("返回值 :"+str1.substring(2, 7))
println("返回值 :"+str1.substring(2, str1.length))
résultat de l'opération :
返回值 :s is text
返回值 :is is
返回值 :is is text
Remarque Si endIndex dépasse la plage de la chaîne, String index out of range: 20
une erreur sera signalée.
2. Séparation de la segmentation des chaînes
split()
La méthode divise la chaîne en fonction de la correspondance avec l'expression régulière donnée, et le résultat est Array<String>
.
Remarque : Les caractères d' échappement tels que .
, $
et doivent être ajoutés .|
Remarque : plusieurs séparateurs peuvent être utilisés comme tirets.*
\\
|
split()
Les méthodes ont les deux formes suivantes :
split(regex: String)
regex est le délimiteur d'expression régulière.split(regex: String, limit: Int)
regex est le délimiteur d'expression régulière et limit est le nombre de divisions, c'est-à-dire que seuls les premiers délimiteurs de limite sont divisés.
L'exemple de code est le suivant :
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)
résultat de l'opération :
- 分隔符返回值 :
Welcome
to
here
- 分隔符设置分割份数返回值 :
Welcome
to-here
转义字符返回值 :
java
lang
String
多个分隔符返回值 :
acount=?
uu =?
n=?
3. Supprimer les espaces de début et de fin -trim
trim()
La méthode est utilisée pour supprimer les caractères blancs de début et de fin (y compris les caractères de retour à la ligne) de la chaîne, et comme elle n'a pas de paramètres entrants, les parenthèses peuvent être omises. Par exemple:
val str3 = "\n abc 12 \n "
println(str3.trim)
println("str3.trim length:"+str3.trim.length)
println(str3)
println("str3 length:"+str3.length)
résultat de l'opération :
abc 12
str3.trim length:6
abc 12
str3 length:11
4. Conversion vers et à partir de valeurs numériques
Selon le type, la conversion des chaînes en nombres peut être effectuée de la manière suivante :
- Int - un entier
Integer.parseInt()
- Entier long - long
java.lang.Long.parseLong()
- Float - type à virgule flottante
java.lang.Float.parseFloat()
- Double - Type à virgule flottante double précision
java.lang.Double.parseDouble()
L'exemple de code est le suivant :
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)
résultat de l'opération :
23
23
233.3
233.3
Notez que si le format de chaîne n'est pas correct, java.lang.NumberFormatException
une exception sera levée, ce qui peut être considéré try/catch
comme une contre-mesure :
var odd_value: Long = 0L
try {
odd_value = java.lang.Long.parseLong(str_float)
} catch {
case e: NumberFormatException => {
e.printStackTrace()
println("Wrong format")
}
}
code complet
StringTest.scalaStringTest.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")
}
}
}
}