2017-09-08 5 views
0

나는 이에 관한 문서를 찾지 못했습니다.스칼라에서 인쇄 할 수없는 문자 감지

문자열이 Scala에서 인쇄 할 수없는 문자로 구성되어 있는지 확인하는 방법이 있습니까?

+0

https://stackoverflow.com/questions/2485636/how-to-detect-and-replace-non-printable-characters-in-a-string-using-java – pedrofurla

답변

0

다음 방법은 non-printable ASCII characters을 감지합니다. 간단한 정규식 패턴은 0x20-0x7E ASCII 범위 이외의 모든 문자를 찾기 위해 사용됩니다

def hasNonprintableAsciiChar(s: String): Boolean = { 
    val pattern = """[^\x20-\x7E]+""".r 
    pattern.findFirstMatchIn(s) match { 
    case Some(_) => true 
    case None => false 
    } 
} 

hasNonprintableAsciiChar("abc-xyz-123") 
// res1: Boolean = false 

hasNonprintableAsciiChar("abc¥xyz£123") 
// res2: Boolean = true 

hasNonprintableAsciiChar("abc123" + '\u200B') 
// res3: Boolean = true 
+0

유니 아닌 다른 많은 갖는다 인쇄 가능한 문자. 예 : http://www.fileformat.info/info/unicode/char/200B/index.htm – pedrofurla

+1

제안 된 방법은 인쇄 가능한 ASCII 문자 범위 밖에서 인쇄 할 수없는 것으로 간주하므로 인쇄 할 수없는 유니 코드 문자를 감지 할 수 있어야합니다 . 예 : 'hasNonprintableAsciiChar ("abc123"+ 0x200B.toChar)'는'true'를 반환합니다. –

+0

대단히 감사합니다. 모든 응답을 제공합니다. 모두 도움이됩니다. – Garipaso

1

여기에 관용적 스칼라로 번역 this question에 허용 대답이야.

import java.awt.event.KeyEvent 

def isPrintableChar(c: Char) = 
    !Character.isISOControl(c) && 
    c != KeyEvent.CHAR_UNDEFINED && 
    Option(Character.UnicodeBlock.of(c)).fold(false)(
    _ ne Character.UnicodeBlock.SPECIALS)