Ответ 1
Существует множество случаев, когда один или два последовательных комбинирующих символа являются вполне допустимым текстом. Я бы поискал четыре или более из них:
if (getMessage().getRawContent().matches(".*\\p{Mn}{4}.*"))
Пример: ก ิิิิิิิิิิิิิิิิิิิิ < → ้้้้้้้้้้้้้้้้้้้้ rs00 > ก ้้้้้้้้้้้้้้้้้้้้ ก ็็็็็็็็็็็็็็็็็็็็ ก ็็็็็็็็็็็็็็็็็็็็ ก ิิิิิิิิิิิิิิิิิิิิ ก ้้้้้้้้้้้้้้้้้้้้ ก ็็็็็็็็็็็็็็็็็็็็ ก ิิิิิิิิิิิิิิิิิิิิ ก ้้้้้้้้้้้้้้้้้้้้ (или любой текст "zalgo" )
Я не смог полностью выяснить, как это проверить. Я делаю своего рода антиспам, и я не вижу необходимости сохранять их, поскольку они могут отставать от пользователей и обычно спама.
То, что я пытаюсь сделать, это
if (getMessage().getRawContent().contains(combined character).delete();
Если кто-нибудь знает простой способ проверить комбинированные символы, пожалуйста, напишите!
Если вы смущены тем, что я прошу, я могу объяснить это дальше и показать больше примеров, если это необходимо.
Существует множество случаев, когда один или два последовательных комбинирующих символа являются вполне допустимым текстом. Я бы поискал четыре или более из них:
if (getMessage().getRawContent().matches(".*\\p{Mn}{4}.*"))