使用缓冲区比较字符串

时间:2015-05-08 02:39:55

标签: java string compare buffer

比较字符串时遇到问题。比方说,我有一个缓冲区,用于保存1024位的字符串。如果我用字符串“Hello”填充该缓冲区,则缓冲区将包含“Hello”+剩余的字节数。如果我创建了另一个分配了“Hello”的字符串,没有任何预先指定的缓冲区。由于这个缓冲区,两者永远不会相等。

byte[] buffer = new byte[1024];
String a = someInputStream.read(buffer); // A will contain "Hello" + rest of bytes.
String b = "Hello"; // Same string but with no buffer
System.out.println(a.equals(b)); // Would print false

有没有办法在不考虑缓冲区的情况下比较这两个字符串?

2 个答案:

答案 0 :(得分:0)

它非常简单:java中的字符串与不以0结尾的c字符串不同。因此,从缓冲区创建的String的长度为1024,最后的字符串为0。除此之外,inputStream.read(buffer)将返回int,表示实际读取了多少字节,而不是包含缓冲区的String

答案 1 :(得分:0)

inputStream.read(buffer)返回int而不是String。你可以比较如下。

byte[] buffer = new byte[1024];
inputStream.read(buffer); // A will contain "Hello" + rest of bytes.
String b = "Hello"; // Same string but with no buffer
System.out.println(new String(buffer).trim().equals(b));