2010-10-04 50 views
3

我在這裏工作了一段時間,在這裏沒有發現任何關於此的內容,所以我想我會發布我的解決方案來批評/有用。從字節數組中刪除多餘的「空白」字符並轉換爲字符串

import java.lang.*; 
public class Concat 
{  
    public static void main(String[] args) 
    { 
     byte[] buf = new byte[256]; 
     int lastGoodChar=0; 

     //fill it up for example only 
     byte[] fillbuf=(new String("hello").getBytes()); 
     for(int i=0;i<fillbuf.length;i++) 
       buf[i]=fillbuf[i]; 

     //Now remove extra bytes from "buf" 
     for(int i=0;i<buf.length;i++) 
     { 
       int bint = new Byte(buf[i]).intValue(); 
       if(bint == 0) 
       { 
        lastGoodChar = i; 
        break; 
       } 
     } 

     String bufString = new String(buf,0,lastGoodChar); 
     //Prove that it has been concatenated, 0 if exact match 
     System.out.println(bufString.compareTo("hello")); 
    }  
} 
+0

我打電話這不是一個真正的問題,因爲你張貼在這個問題的解決方案,基本要求的答案是問題/批評。如果您想探索做某事的最佳方式,請將需求作爲問題妥善定義,然後針對您自己的問題發佈答案。這樣我們可以上/下投票或在評論中提出建議。 – 2010-10-04 18:00:50

+0

對,對不起。這並不意味着要像分享代碼一樣提出問題。我發現通常會導致更多建設性的批評。而且,作爲一個非CS的人,當你不知道如何溝通你想做的事時,會發現它有幫助。 – user460880 2010-10-04 18:31:11

回答

9

我相信這做同樣的事情:

String emptyRemoved = "he\u0000llo\u0000".replaceAll("\u0000.*", ""); 
+0

太棒了,謝謝。我想出瞭如何用你的建議替換第二個「for」循環。但它確實需要首先通過指定正確的字符集正確解碼字節數組。 – user460880 2010-10-04 20:08:27

+1

或者加入: new String(content,0,totalBytesRead,「ISO-8859-1」); 我認爲它也是一樣! – cesards 2012-12-18 10:22:27

相關問題