2013-05-05 2 views
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 
    } 

이 모든 발행 수와 일치하지 않습니다. 첫 번째 기간 이후에만 대문자로 표시됩니다.

당신은 사용할 수
+2

이 첫 번째 코드는 (당신이 정규식을 변경하지 않는 단어 자체에있는' "$ 2"'' "$ 2" '때문에 작동하지 않습니다). –

+0

그래, 그럼 어떻게해야하지? –

+0

예제 라인이 작동하지 않습니까? – thoredge

답변

7

RegexreplaceAllIn 방법 : uppercasing이 후

scala> """[\.!?]\s+[a-z]""".r.replaceAllIn("abc. abc", _.matched.toUpperCase) 
res0: String = abc. Abc 
+0

'_.matched.toUpperCase'는'_.group (0). toUpperCase'보다 더 적절할 것입니다 – nadavwr

+0

@nadavwr : fixed. 고맙습니다. – senia

관련 문제