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

标签 java arrays regex string split

我正在从蓝牙特征中获取数据(以字节为单位),并将其转换为如下所示的 float 组:

[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”。

我已经尝试过这样做:

编辑(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

提前感谢您的帮助!!

最佳答案

需要先删除[],数组索引范围为[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

关于java - 如何将一个字符串数组拆分为多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51657246/

相关文章:

java - 正则表达式前向和后向匹配

java - 简单日期格式 ("yyyy-MM-dd' T'HH :mm:ssZ") parse in java gives wrong date?

java - Gson 预期为 BEGIN_ARRAY 但在第 1 行第 62 列为 STRING

php - (Symfony 4) 无法访问 twig 中的常量数组元素

java - docker 容器内的 Jenkinsfile Maven 插件

java - Java 中的 .Net Guid.ToByteArray() 相当于什么

c++ - 如何在不创建实例的情况下获取std::array <T,N>中的元素数?

java - 了解失败的 JUnit4 测试吗?

sql - 正则表达式匹配字符串和插入符号 (^) 之间的所有内容,不包括插入符号 (^)

python - 与模式匹配且不包含某些单词的字符串