1 Pytanie: Jak naprawić backspaces wysyłane przez Telnet do Inputstream w Javie?

pytanie utworzone w Tue, Apr 9, 2019 12:00 AM

Na moim serwerze Java Chatserver użytkownicy mogą zmienić swoją nazwę użytkownika, używając spacji przed ich wiadomością.

Obecnie koduję serwer czatu i klienta w Javie. Działa bardzo dobrze, ale mam irytujący „błąd”, że użytkownicy mogą wysyłać wiadomości bez swojej nazwy użytkownika, używając backspaces przed swoimi wiadomościami, ponieważ telnet lub używany BufferedReader-InputStream zapisuje spacje w łańcuchu wiadomości.

Próbowałem zastąpić spacje, co uniemożliwiło użytkownikom zmianę błędów ortograficznych.

Nie wiem, co powinienem spróbować dalej.

Przykład: Test>[10 backspaces]This is a test. Inni otrzymują wiadomość This is a test., ale rzeczywista wiadomość powinna być Test:This is a test.

    
0
  1. Czy możesz spróbować zrobić String.trim() w wiadomości? Usunie pierwsze i końcowe białe znaki (jeśli się nie mylę, włączając backspace i wszystko z kodem Ascii mniejszym niż 0x20)
    2019-04-09 11: 28: 02Z
  2. Skąd pochodzi wyświetlany prefiks „Test:”? Klient lub serwer? Jeśli serwer, a zatem masz wiadomość z prowadzącymi tylko backspaceami (bez prefiksu, którego nie chcesz stracić), powyższa sugestia przycięcia białych znaków jest dobra.
    2019-04-09 11: 44: 07Z
  3. Prefiks zostanie zastosowany z serwera. Próbuję to zrobić z przycinaniem Działa. Dziękujemy za rozwiązanie!
    2019-04-09 11: 58: 09Z
1 odpowiedzi                              1                         

Ta linia kodu naprawiła mój problem częściowo:

while (input.contains("\b")) input = input.replaceAll("^\b+|[^\b]\b", "");
    
1
2019-05-22 11: 56: 49Z
źródło umieszczone tutaj