Как проверить, содержит ли сообщение комбинированный символ?

168
21

Пример: ก ิิิิิิิิิิิิิิิิิิิิ < → ้้้้้้้้้้้้้้้้้้้้ rs00 > ก ้้้้้้้้้้้้้้้้้้้้ ก ็็็็็็็็็็็็็็็็็็็็ ก ็็็็็็็็็็็็็็็็็็็็ ก ิิิิิิิิิิิิิิิิิิิิ ก ้้้้้้้้้้้้้้้้้้้้ ก ็็็็็็็็็็็็็็็็็็็็ ก ิิิิิิิิิิิิิิิิิิิิ ก ้้้้้้้้้้้้้้้้้้้้ (или любой текст "zalgo" )


Я не смог полностью выяснить, как это проверить. Я делаю своего рода антиспам, и я не вижу необходимости сохранять их, поскольку они могут отставать от пользователей и обычно спама.


То, что я пытаюсь сделать, это


if (getMessage().getRawContent().contains(combined character).delete();

Если кто-нибудь знает простой способ проверить комбинированные символы, пожалуйста, напишите!


Если вы смущены тем, что я прошу, я могу объяснить это дальше и показать больше примеров, если это необходимо.

спросил(а) 2021-01-19T16:29:28+03:00 2 месяца, 3 недели назад
1
Решение
143

Существует множество случаев, когда один или два последовательных комбинирующих символа являются вполне допустимым текстом. Я бы поискал четыре или более из них:

if (getMessage().getRawContent().matches(".*\\p{Mn}{4}.*"))

ответил(а) 2021-01-19T16:29:28+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема