반응형
채팅 개발을 하다 보면 사용자가 입력 시 공백이나 줄 바꿈 등의 글자가 존재하지 않는 입력을 하는 경우가 있습니다.
이 경우 기타 톡들을 보면(카카오톡, 라인 등등) 전송을 하지 않는 것을 확인할 수 있습니다.
그러므로 공백만 입력되었는지를 체크하는 로직이 필요한데 그 방법은 아래와 같습니다.
1. "trimmingCharacters(in:)" 메서드 사용
String 타입은 trimmingCharacters이라는 메서드를 가지고 있습니다. 이 메서드는 문자열의 앞뒤에 있는 공백과, 줄 바꿈을 제거한 후, 결과 문자열이 비어 있는지 확인합니다. 이를 통하여 공백만 입력되었는지 체크할 수 있습니다.
func isOnlyWhitespace(text: String) -> Bool {
return text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
}
공백과 줄 바꿈 등으로만 이루어졌다면 true를 아니라면 false를 반환합니다.
2. 정규 표현식 사용
정규 표현식을 사용하여서도 체크가 가능합니다.
func isOnlyWhitespace(text: String) -> Bool {
return text.range(of: "^[\\s]*$", options: .regularExpression) != nil
}
위 코드에서 ^[\\s]*$ 이 정규 표현식은 문자열이 공백 문자로 구성되어 있거나 비어 있는 경우에 일치하게 되므로 true를 반환 아닐 경우 false를 반환합니다.
사용예시
그럼 위 방식을 사용하는 방법을 알아보겠습니다.
UItextView의 경우에는 delegate를 등록하고 텍스트 변경 시 호출되는 textViewDidChange에서 위 메서드를 사용하면 됩니다.
혹은 Rxswift를 사용할 경우에도 동일하게 사용할 수 있습니다.
//UITextViewDelegate
func textViewDidChange(_ textView: UITextView) {
if isOnlyWhitespace(text: textView.text) {
// 텍스트가 공백만 있음
} else {
// 텍스트에 공백 외의 문자가 있음
}
}
//RxSwift
textView.rx.text.orEmpty
.subscribe(onNext: { text in
if isOnlyWhitespace(text: textView.text) {
// 텍스트가 공백만 있음
} else {
// 텍스트에 공백 외의 문자가 있음
}
}).disposed(by: disposeBag)
반응형
'2023년 부터 > iOS&Swift' 카테고리의 다른 글
[iOS/Swift]OneLink 적용 및 테스트 방법 (0) | 2024.02.08 |
---|---|
[iOS/Swift]Decoding Error(The data couldn’t be read because it is missing) (0) | 2024.01.15 |
[iOS] Android System.currentTimeMillis 사용하기 (1) | 2023.11.25 |
[iOS] iOS 개발에서의 핵심 이해: sizeToFit과 sizeThatFits (1) | 2023.11.21 |
[iOS]iOS 개발을 위한 필수 라이브러리: Kingfisher의 쉬운 사용법 (1) | 2023.11.21 |