В общем, предполагается, что обмен сообщений между клиентами будет происходить через сокеты.
У этого подхода есть определённые плюсы, например, в случае ошибки в одном чате, у нас не ляжет весь мессенджер.
скорость отправки сообщений, ибо они не проходят через какой либо парсинг или что-то в этом духе, за исключением разве что определённой визуализации на javaFX.
всё равно остаётся риск, что при высоких нагрузках, порты на стороне сервера могут тупо закончится.
Я только учусь и это мой первый крупный проект, поэтому не судите строго
Сформулируйте поточнее. Вы дублирование знаков хотите убрать (дублей в середине слова нет)?
И что делать со знаками ! в начале строки (нужно видеть пример, что вы хотите получить)?
Возможно, ничего выдумывать не надо и вам нужно просто подчистить строку от лишних знаков ! с помощью обычной строковой функции замены символов: