2
문제는 사소한 것입니다. 일부 언어로 된 문자열을 사용하여 발음 기호를 제거하십시오. 예를 들어 "텔레폰"을 가져다 대면 결과 "전화"가 생성됩니다.Scala에서 발음 구별 기호 제거
자바에서나는 그런 방법을 사용할 수 있습니다
public static String removeAccents(String str){
return Normalizer.normalize(str, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
을하고 잘 작동하지만 다음과 같이 스칼라에 ... 나는 코드를 시도하지 않습니다
val str = Normalizer.normalize("téléphone",Normalizer.Form.NFD)
val exp = "\\p{InCombiningDiacriticalMarks}+".r
exp.replaceAllIn(str,"")
은 '수행 일하지 마!
저는 스칼라에서 Regex를 사용하면서 뭔가를 놓치고 있다고 생각합니다. 그래서 어떤 도움을 주시면 감사하겠습니다.
둘 다 나를 위해 잘 작동하는 것 같습니다. 그냥 코드에서 추측하면 어쩌면 당신은'replaceAllIn'이'str'을 제자리에서 수정할 것이라고 기대하고있을 것입니다. Java/Scala의 문자열은 변경되지 않기 때문에 이런 일은 일어나지 않을 것입니다. – ghik
@ghik 아니오, 기대하지는 않지만 스칼라로 얻은 결과는 다음과 같습니다. – arussinov
발음 기호가없는 새 문자열을 반환하지만 똑같은 문자열을 반환합니다. "téléphone"을 사용하면 "téléphone "... @ 호크 어떻게 작동합니까? – arussinov