2

我正在使用正则表达式将 . 之后的第一个字母大写。或者 ?或者 !但我无法使用大写字母,有什么我遗漏的吗?

val reply = line.replaceAll("""([\.!?])\s+([a-z])""","""$1"""+" "+"""$2""".toUpperCase)

.toUpperCase没有效果所以我尝试了这个:

val pattern = """(?:(.+)?([\.!?])\s+([a-z])(.+)?)+""".r

     val reply = line match {
      case pattern(a,b,c,d) => a+b+" "+c.toUpperCase+d
      case _ => line
    }

这与 的所有出现不匹配。并且它仅在第一个句点之后将字母大写。

4

1 回答 1

7

您可以使用以下replaceAllIn方法Regex

scala> """[\.!?]\s+[a-z]""".r.replaceAllIn("abc. abc", _.matched.toUpperCase)
res0: String = abc. Abc
于 2013-05-05T06:55:07.940 回答