scala -- 字符串

字符串

"Hello World".getClass // 获取类  class java.lang.String
"Hello World".getClass.getName //获取类名  java.lang.String
66.getClass //int
66.getClass.getName //int

scala 的String 就是Java 的String 类。所以,它可以直接调用 Java 中String 的所有方法。如计算长度length ,是否以xx开头startsWith ,以xx结尾endsWith 包含contains拼接 + 替换等等常用的字符串方法。

同时也可以把String 当作字符序列来对待。进行 foreachfilter ,map 等方法

虽然String在Java中被声明为了final ,但是依旧可以通过 隐式转换 给String 添加自定义方法。

字符串中的变量代换

字符串代换类似于 其他语言的 %s 只是scala 提供四种已定义的:s,f,raw ,format格式

s

   val name = "xiaoming"
   val sex = "boy"
   val age = 18
   val run = 100
   val aen = s"$name is ${age} old" //xiaoming is 18 old  如果只是简单的代入,那么可以省略{}
   val ben = s"xiaoming run ${run+100} km" //xiaoming run 200 km //did xiaoming run 100 km right? true  数字和数字相加
   val cen = s"did xiaoming run 100 km right? ${run == 100 } "
   val den = s"xiaoming ${age+"100"}? no" //xiaoming 18100? no 注意这里的数字和字符串相加
   
   class Person(val name:String,val age:Int)
   val lihong = new Person("lihong",33)
   val fen = s"${lihong.name} is a ${lihong.age} old woman"  // 使用对象变量
   val gen = s"$lihong.name is a $lihong.age old woman" //省略{}那么就不会计算而是直接打印Test$Person$1@1888ff2c.name is a Test$Person$1@1888ff2c.age old woman  

f 用于数字字符串插值

 val a = 10
 val aen = f"$a%.2f bigger then $a?" //10.00 bigger then 10?

raw 是原生字符串,也就是说 不对 字符串进行转义。和""" """ 效果类似

 val men = raw"hello 
 xiaoming"
 val nen ="""hello 
 xiaohong"""

format 和python 中的format差不多,但是占位符由{} 变成了% ,因此感觉更是format 和% 模式的结合体

    val name = "xiaoqing"
    val age = 1000
    val oen = "%s is %d years old".format(name,age)//xiaoqing is 1000 years old
    
    printf("%s is %d years old",name,age) //printf 的用法  
正则表达式

scala的正则表达式有两种写法,但都殊途同归,生成一个正则匹配对象。

  1. 通过 字符串.r 的方式生成一个正则匹配对象
   val pat = "\d+".r
  
   val sen = "I am 20 years old,i hava 5 yuan"
   val mat = pat.findFirstIn(sen) // 只找第一个 Some(20)
   val matt = pat.findAllIn(sen) // 查找所有,返回的是 一个迭代器。
  1. 通过引入Regex 生成一个正则匹配对象
 import scala.util.matching.Regex
    val pat = new Regex("\d+")//  注意这里 是  \ 两个反斜杠
    val sen = "I am 20 years old,i hava 5 yuan"
    val mat = pat.findFirstIn(sen)
    val matt = pat.findAllIn(sen)
原文地址:https://www.cnblogs.com/jijizhazha/p/7253999.html