2012-09-16 51 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