2011-02-11 3 views
0

Я пишу приложение клиент/сервер. У меня есть класс Message с несколькими строковыми полями. Я написал следующий метод возвращает символ [] из этих полей:Определить специальный символ в массиве символов

public char[] toArrayOfChar() 
{ 
    String str = ""; 
    char[] charr; 
    str += from; 
    str += "\r\n"; 
    str += to; 
    str += "\r\n"; 
    str += header; 
    str += "\r\n"; 
    str += body; 
    str += "\r\n"; 
    str += header; 
    str += "\r\n"; 
    charr = str.toCharArray(); 

    return charr; 
} 

Теперь я хочу, чтобы отделить каждое поле и преобразовать его в строку после того, как я послал его от клиента к серверу. Как определить символы возврата каретки и строки в конце каждого поля?

+0

StringTokenizer может помочь. Но, может быть, есть лучший способ. – Mikel

+0

++ StringTokenizer, или если вы чувствуете, что masta regEx также работает. Хотя я бы просто использовал \ n и разделился как самый простой, так как он получил – bestsss

ответ

2

Для самого вопроса, хорошие ответы были даны, но ваш стиль кода:

Неправильно использовать несколько вызовов String + =. Вот более эффективная версия.

Сначала определим константу для CR + LF:

private static final String CRLF = "\r\n"; 

Теперь использовать StringBuilder построить String, как это:

public char[] toArrayOfChar() 
{ 
    return new StringBuilder() 
     .append(from).append(CRLF) 
     .append(to).append(CRLF) 
     .append(header).append(CRLF) 
     .append(body).append(CRLF) 
     .append(header).append(CRLF) 
     .toString() 
     .toCharArray(); 
} 

Это и легче читать и более эффективным (версию должен создать новый экземпляр String для каждого вызова + =).

Кроме того, может быть, вы просто должны написать этот код (минус .toCharArray() линия) в toString() метод вашего объекта и сделать this.toString().toCharArray(), чтобы получить char[]. Это всегда хорошая практика для использования стандартных механизмов, вот что такое метод toString(), create a String representation of the object.

2

Предлагаю вам ознакомиться с классами PrintWriter и BufferedReader, как предложено в official trail: Reading from and Writing to Sockets.

Используя эти классы, вы можете просто отправить ваши строки с помощью

out.println(from); 
out.println(to); 
out.println(header); 
out.println(body); 

и читать с помощью

String from = bufferedReader.readLine(); 
String to  = bufferedReader.readLine(); 
String header = bufferedReader.readLine(); 
String body = bufferedReader.readLine(); 
+0

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

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