如何检测和替换char []中的换行符?

时间:2012-07-16 16:12:14

标签: java char

我的应用程序使用套接字连接到服务器并读取数据。这些数据最多只有4个字符,但偶尔会少于此数字。数据附加了CR LF组合,我不希望它出现在下一步处理中。

因为我从不想读超过四个字符,所以我有一个char[4]缓冲区。然后,为了说明数据少于四个字符的时间(以及CR和LF字符蔓延),我有这个:

for(int i = 0; i < 4; i++) {
    String hexString = Integer.toHexString(buffer[i] | 0x10000).substring(1);
    if((hexString == "000d") || (hexString == "000a")) {
        buffer[i]='0';
    }
}

通过明智的日志记录,我可以看到循环按预期执行,但不会覆盖CR(U + 000d)和LF(U + 000a)字符。我希望上面的代码用'0'替换回车或换行的任何实例,但缓冲区的内容似乎没有改变。

说实话,无论如何这感觉就像是一种笨拙的方式,所以我的问题分歧了:

  1. 我的代码出了什么问题?如何修复它以按预期执行?
  2. 有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

听起来您最好先使用BufferedReader及其readLine()方法开始:

BufferedReader reader = new BufferedReader(new InputStreamReader(stream, charset));
try {
    String line;
    while ((line = reader.readLine()) != null) {
        processLine(line);
    }
} finally {
    reader.close();
}

此处的行不会包含行分隔符,您无需担心对read的单个调用是否会在行中途等结束。