我有一个主要的textarea。用户只需在其中输入多行并提交表单即可。在我的支持bean中,值在换行符处被拆分。每行都经过验证。从字符串中删除有效行,并保留无效行,并再次发送给用户。
拆分代码:
StringTokenizer tokens=new StringTokenizer(value,"\n\r");
使用无效行重新填充值:
valueStrBldr.append(invalidLine).append("\n\r");
问题是当值重新加载到文本区域时,它会有很多不需要的换行符和空行。是否必须对平台相关的换行符做些什么?
当我删除\ r时,问题解决了,但是这个值没有正确分割 - 我的意思是为什么不一致?
答案 0 :(得分:2)
我建议使用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
。它应该适用于所有客户端(webbrowsers)。
valueStrBldr.append(invalidLine).append("\r\n");
答案 1 :(得分:1)
我认为它应该是'\ r \ n'(逆序)。如果我没记错,\ r是一行的结尾,\ n是一个新行。
无论如何,尝试只打印出输入的ascii代码,并查看它。尝试识别模式。这种蛮力,但你会发现在3-4行之后你就会知道发生了什么。