2012-09-16 96 views
1

我需要使用Java將String[]轉換爲Byte[]。基本上,我有從我的數據庫返回的空格分隔的字符串。我已經成功地將這個字符串拆分爲一個字符串元素數組,現在我需要將每個元素轉換爲一個字節,並在最後生成一個字節[]。Java將字符串[]轉換爲字節[]確保跳過空字符串

到目前爲止,下面的代碼是我能夠放在一起的,但是我需要一些幫助來完成這個工作,因爲getBytes()函數返回的是byte []而不是單個字節。我只需要一個字節的字符串(例如字符串是0xd1

byte[] localbyte = null; 
if(nbytes != null) 
{ 
    String[] arr = (nbytes.split(" ")); 
    localbyte = new byte[arr.length]; 
    for (int i=0; i<localbyte.length; i++) { 
     localbyte[i] = arr[i].getBytes(); 
    } 
} 
+4

你能告訴我們你試圖完成什麼?可能有更好的方法來做到這一點。 – oldrinb

+3

我第二@ oldrinb的建議。同樣在回答他的問題之後,您可能會想要提供有關您的問題的更多詳細信息以及您當前的解決方案無法正常工作。但首先,我們要確保你沒有吠叫錯誤的樹。 –

+0

我正在嘗試取一個字符串,將它拆分成一個數組,將空的條目移入數組,然後將字符串數組轉換爲一個字節數組。 – Kobojunkie

回答

0

Byte(String string)Java documentation)怎麼辦?
你也可能要查找Byte.parseByte(string)doc

byte[] localbyte = null; 
if(nbytes != null) 
{ 
    String[] arr = (nbytes.split(" ")); 
    localbyte = new byte[arr.length]; 
    for (int i=0; i<localbyte.length; i++) { 
     localbyte[i] = new Byte(arr[i]); 
    } 
} 

注意:

字符串中的字符必須都是十進制數字,除了 第一個字符爲ASCII字符減號符號' - '('\ u002D')爲 表示負值。

所以你可能想要趕上NumberFormatException
如果這不是你找的或有任何問題,請提供nbytes的相關信息嗎?

而且邁克爾的答案可能變成有用的:https://stackoverflow.com/a/2758746/1063730

+0

轉換方法Byte.parseByte(string)是我正在尋找的。謝謝 – Kobojunkie

1

我假設你想分裂字符串是這樣的:

"Hello world!" 

進入"Hello""world!"代替"Hello"" ""world!"

如果是這樣的話,你可以簡單地調整分割正則表達式,使用它代替:

String[] arr = (nbytes.split(" +")); 
1

你應該熟悉正則表達式。相反,分裂後去除空字符串,您可以將字符串一個或多個空格分裂:

要通過空間或選項卡分割字符串,可以使用:

String[] arr = (nbytes.split("\\p{Blank}+")); 

例如

"Hello \tworld!" 

結果

"Hello","world!" 

要分割任何空白一個字符串,你可以使用:

String[] arr = (nbytes.split("\\p{Space}+")); 

E.g

"Hello \tworld!\nRegular expression" 

結果

"Hello","world!","Regular","expression" 
+0

我想我有部分將字符串拆分。我需要將字符串轉換爲字節。 – Kobojunkie

+0

一個字符由一個字節表示(至少),一個字符串由一系列字符表示,yield由一系列字節表示。所以你**不能將一個字符串轉換爲一個字節,除非你計算字符串返回一個字節。 –

+0

如何在Java中計算字符串以返回一個字節? – Kobojunkie