簡體   English   中英

使用緩沖區比較字符串

[英]Comparing Strings using a 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

有什么方法可以在不考慮緩沖區的情況下比較這兩個字符串?

這很簡單:java中的字符串與不以0結尾的c字符串不同。因此,從緩沖區創建的String長度為1024,結尾處有很多0。 除了該inputStream.read(buffer)之外,還將返回一個int指示實際讀取了多少字節,而不是包含緩沖區的String

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM