[英]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.