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 に答える