创建正则匹配表达式,在正则表达式字符串后加 .r
val numPattern = "[0-9]".r val str = "1a2b" numPattern.findFirstIn(str).getOrElse(0) numPattern.findAllIn(str).toArray numPattern.findFirstIn(str).foreach(println)findFirstIn返回一个 Option 对象,处理方式一般有
取值 getOrElse使用模式匹配对 Option 分类处理foreach 对值处理,如 printlnfindAllIn返回一个迭代器,处理方式
使用 foreach 对结果进行遍历使用 toArray 方法将迭代器转为 Array numPattern.findAllIn(str).toArray numPattern.findFirstIn(str).foreach(println)方法1:
直接在String对象上调用 replaceAll
方法2:
创建 regex 正则表达式对象,调用 replaceAllIn 方法
注:结果须赋给新的变量
定义正则表达式
提取为独立变量 val pattern1 = "num ([0-9])".r val pattern2 = "char ([A-z])".r val num1 = "num 1" val char1 = "char a" val pattern1(a) = num1 val pattern2(b) = char1 模式匹配即为 String 类添加自定义方法,如
val str = "ABC".increment定义一个隐式转换类,在该类中定义需要的方法来实现
implicit class MyString(s: String) { def increment: String = s.map(a => (a+1).toChar) } val str = "ABC".increment注意:一个隐式转换类必须定义在允许定义方法的地方,不是最高层。也就是说隐式转换类必须定义在类、对象或包内部
这样做的好处是不需要通过继承现有的类来添加新的行为,只需要在 import 时定义并引入新的方法,并把这些方法加入到当前范围内的所有 String 类中,工作原理:
编译器需要在 String 上调用 increment 方法String 类中不存在该方法,编译器在当前范围内搜索一个接收 String 作为参数的隐式转换找到 MyString 类,在该类中找到了该方法