1.6字符串中的查找模式(符合一个正则表达式)
- val patternStr = “正则表达式”.r
String.r方法可以创建一个Regex对象 - val match1 = patternStr.findFirstIn(待查找String)
Regex对象的findFirstIn方法会找到第一个匹配的,返回一个Option[String],相当于一个容器,包含了零或者一个值的容器 - patternStr.findAllIn(待查找String)
findAllIN返回一个迭代器,可以对结果进行遍历
通常使用Option的方式有如下场景:
- . 在值上调用getOrElse
- . 在匹配表达式中使用Option
- . 在foreach循环中使用Option
1.7字符串中的替换模式
- s1.replaceAll(字串/正则表达式,新串)
- s1.replaceFirst
- patternStr.replaceFirstIn(s1,新串)
1.8抽取String中模式匹配的部分
- 定义期望的模式,从目标字符串中抽取正则组
scala> val pattern = "([0-9]+) ([A-Xa-z]+)".r
pattern: scala.util.matching.Regex = ([0-9]+) ([A-Xa-z]+)
scala> val pattern(count,fruit) = "100 Bananas"
count: String = 100
fruit: String = Bananas
1.9访问字符串中的一个字符
- s1.charAt(下标)
- s1(下标)
背后的原理 s1.apply(下标)
1.10在String类中添加自定义的方法
1.implicit隐式转换类,定义方法
scala> implicit class StringImprovements(s:String){
| def increment = s.map(c => (c + 1).toChar)
| }
defined class StringImprovements
- 使用方法
scala> val result = "HAL".increment
result: String = IBM
通常的做法是将隐式转换类放到对象中,例如 将以上的隐式转换类放到object StringUtils中,之后在其他地方导入这个对象StringUtils._
或者在包中加入隐式转换类,即 隐式转换类的定义放到 package object utils中,导入 utils._即可