본문 바로가기

Android

이모지 체크 하기

회사의 레거시 서버의 탓에 EditText 로 전달 받는 값 중 이모지를 입력하면 안된다는 항목이 존재해서 이를 위해 자료를 찾고 있었는데 

EditText 자체에 입력이 아에 안되게 하는 방법 그리고 입력 된 후 String 에 이모지가 담겨 있는지 확인하는 방법 이렇게 2가지 형태로 

체크 할 수 있었다. 우선은 둘다 적용해보기로 하고 아래와 같이 Extension 을 만들어냈다. 

EditText 에 이모지가 입력 안되게 하는 방법

fun EditText.blockingEmoji() {
    filters = arrayOf(object: InputFilter {
        override fun filter(
            source: CharSequence?,
            start: Int,
            end: Int,
            dest: Spanned?,
            dstart: Int,
            dend: Int
        ): CharSequence? {
            for (index in start until end) {
                source?.get(index)?.let {
                    val type: Int = Character.getType(it)
                    if (type == Character.SURROGATE.toInt() ||
                        type == Character.NON_SPACING_MARK.toInt() ||
                        type == Character.OTHER_SYMBOL.toInt()) {
                        return ""
                    }
                }
            }
            return null
        }
    })
}

String 에 이모지를 확인하는 방법 

fun String?.containsEmoji(): Boolean {
    if (this.isNullOrEmpty()) {
        return false
    }

    return EmojiManager.containsEmoji(this)
}

여기서 EmojiManager 는 아래의 라이브러리를 이용했다. 

// Emoji - https://github.com/vdurmont/emoji-java
implementation 'com.vdurmont:emoji-java:5.1.1'

 

참조

https://stackoverflow.com/questions/24840667/what-is-the-regex-to-extract-all-the-emojis-from-a-string

'Android' 카테고리의 다른 글

AOS Border fade-in/fade-out  (0) 2021.06.30
Dagger Hilt  (0) 2020.07.03
AppUpdateManager  (0) 2020.01.29
SameSite=Lax  (0) 2020.01.29
SameSite=Lax  (0) 2020.01.29