Regex 将句点后的第一个字母大写
我用正则表达式将后面的第一个字母大写。或或但是我不能用大写字母,有什么我遗漏的吗Regex 将句点后的第一个字母大写,regex,scala,uppercase,Regex,Scala,Uppercase,我用正则表达式将后面的第一个字母大写。或或但是我不能用大写字母,有什么我遗漏的吗 val reply = line.replaceAll("""([\.!?])\s+([a-z])""","""$1"""+" "+"""$2""".toUpperCase) .toUpperCase无效,因此我尝试了以下方法: val pattern = """(?:(.+)?([\.!?])\s+([a-z])(.+)?)+""".r val reply = line match {
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
}
这与发生的所有事件不匹配。它只在第一个句点后大写字母。您可以使用
Regex的replaceAllIn
方法:
scala> """[\.!?]\s+[a-z]""".r.replaceAllIn("abc. abc", _.matched.toUpperCase)
res0: String = abc. Abc
第一个代码不起作用,因为大写字母后的“$2”
是“$2”
(您正在更改regex,而不是单词本身)。好的,但我该怎么做呢?您有一个不起作用的示例行吗?。matched.toUpperCase
比更合适。group(0)。toUpperCase
@nadavwr:fixed。非常感谢。