обработка разрывов строк в простом текстовом выражении, представленное значение - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть textarea простых лиц. Пользователь просто вводит в нее несколько строк и отправляет форму. В моем бэк-бине значение разделяется на разрывы строк. Каждая строка проверена. Допустимые строки удаляются из строки, а неправильные строки сохраняются и снова отправляются пользователю.

Сплит код:

StringTokenizer tokens=new StringTokenizer(value,"\n\r");

Заново заполните значение недействительными строками:

valueStrBldr.append(invalidLine).append("\n\r");

Проблема в том, что когда значение перезагружается в текстовую область, оно имеет много нежелательных разрывов строк и пустых строк. Это должно что-то делать с зависимыми от платформы переносами строк?

Когда я удаляю \ r, проблема решается, но тогда значение не разделяется правильно - я имею в виду, почему несоответствие?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

Я предлагаю использовать BufferedReader#readLine() вместо того, чтобы читать строки на переносах строк.Это охватывает все возможные специфичные для платформы разрывы строк, такие как \r\n, \r и \n, без которых вам не о чем беспокоиться (обратите внимание, что \n\r это , а не допустимая последовательность разрывов строк).*

BufferedReader reader = new BufferedReader(new StringReader(value));
String line = null;

while ((line = reader.readLine()) != null) {
    // ...
}

При написании строк я предлагаю использовать \r\n.Он должен нормально работать на всех клиентах (веб-браузерах).

valueStrBldr.append(invalidLine).append("\r\n");
1 голос
/ 23 сентября 2011

Я думаю, это должно быть '\ r \ n' (в обратном порядке).Если я правильно помню, \ r - это конец строки, а \ n - это новая строка.

В любом случае, попробуйте просто распечатать код ввода ascii и посмотреть на него.попробуйте распознать шаблон.Это грубая сила звука, но вы увидите, что после 3-4 строк у вас есть представление о том, что происходит.

...