使用缓冲区比较字符串



我在比较字符串时有问题。假设我有一个容纳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

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

inputstream.read(buffer)返回int而不是字符串。您可以比较如下。

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));

这很简单:Java中的字符串与C弦不同,而不是由0结束。因此,从缓冲区创建的String最终将具有1024的长度,并且在末尾有很多0。除此之外,inputStream.read(buffer)将返回int,指示实际读取了多少个字节,而不是包含缓冲区的String

最新更新