如何将字符串数组拆分为多个字符串?

时间:2018-08-02 15:25:18

标签: java arrays regex string split

我正在从蓝牙特征中获取字节数据,并将其转换为如下所示的浮点数组:

[318.0159,331.81818,324.71603,348.4345,323.108,3.2360008]

我希望能够将这些数据分成6个字符串,

“ 318.0159”“ 331.81818”“ 324.71603”“ 348.4345”“ 323.108”“ 3.2360008”。

我已经尝试这样做:

EDIT(像这样初始化charData):

final StringBuilder stringBuilder = new StringBuilder(bytes.length);
for (byte byteChar : bytes)
    stringBuilder.append(String.format("%02X ", byteChar));
String charData = stringBuilder.toString();
String[] data = charData.split(",");
System.out.println(data[1]);
System.out.println(data[2]);
System.out.println(data[3]);
System.out.println(data[4]);
System.out.println(data[5]);
System.out.println(data[6]);

但是当它尝试打印第一个数据点时,出现异常:

Unhandled exception in callback
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

提前感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

您需要先删除[],然后数组索引范围为[0,5]:

String charData = "[318.0159, 331.81818, 324.71603, 348.4345, 323.108, 3.2360008]";
charData = charData.replace("[", "").replace("]", "");

String[] data = charData.split(",");
System.out.println(data[0]);
System.out.println(data[1]);
System.out.println(data[2]);
System.out.println(data[3]);
System.out.println(data[4]);
System.out.println(data[5]);

输出:

318.0159
 331.81818
 324.71603
 348.4345
 323.108
 3.2360008

要避免前导空格,可以使用正则表达式进行分割:

String[] data = charData.split(",\\s*");

输出:

318.0159
331.81818
324.71603
348.4345
323.108
3.2360008

答案 1 :(得分:2)

Sun的答案就在眼前,我也希望修剪输入内容:

charData= charData.replace("[", "").replace("]", "");
String[] data = charData.split(",");
for(int x=0;x<=data.length;x++){
    String data_cleaned = data[x].trim();
    System.out.println(data_cleaned);
 }

答案 2 :(得分:1)

尝试

String[] data = ["318.0159", "331.81818", "324.71603", "348.4345", "323.108", "3.2360008"]
for (int i = 0; i < data.size(); i++) {
     System.out.println(data[i]);
}
当您访问某种数组但索引不可用时,发生

ArrayIndexOutOfBoundsException。还记得数组从0开始

答案 3 :(得分:0)

您的charData似乎没有任何数据,
它与您在查询中提出的要求不同。
请在split()之前打印数据
还请检查for之前以字节为单位的数据(byteChar:字节)

这也不是其他建议的数组索引o到5的问题,其他明智的错误将是java.lang.ArrayIndexOutOfBoundsException:index = 6