2015-03-19 6 views
0

Может ли кто-нибудь указать мне в правильном направлении?Сравните строку, реконструированную из массива байтов, с другой строкой

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

Вот код:

private static String KEY = "Iamastring"; 

    String sentence = new String(receivePacket.getData(), "UTF-8"); //Reconstruct the string 
    sentence.trim(); 
    System.out.println("RECEIVED: " + sentence + " test " + KEY + " test "); 
    System.out.println("Length: " + sentence.length() + " " + KEY.equals(sentence)); 

И это мой выход:

RECEIVED: Iamastring 
Length: 1024 false 

Ожидаемое сравнение KEY.equals (предложение) верно.

+0

Это не может быть ваш выход. Где «тест»? –

+3

Строки неизменяемы, поэтому 'sentence.trim();' не может влиять на исходную строку, хранящуюся в ссылке 'предложение', но создаст и вернет новую обрезанную строку, которую вы должны хранить где-нибудь (вы можете сохранить ее снова в' предложение' Справка). – Pshemo

+0

Покажите нам необработанные байты из getPacket.getData() с помощью java.util.Arrays.toString (byte []). Возможно, они не кодируются в UTF-8. –

ответ

2

Строки не изменяемые: р

Поэтому вы должны назначить sentence.trim() переменной, а затем использовать эту переменную для сравнения и sysouts

sentence=sentence.trim(); 
1

Если вы планируете обрезать(), чтобы помочь вам, вы должны сделать

предложение = sentence.trim();

потому что trim() сам не изменяет оригинальную строку.

Смежные вопросы