我正在尝试用Java编写Android应用程序的Android应用程序。 Android应用程序使用SPP配置文件通过蓝牙读取串行数据字符串。这些字符串由另一台蓝牙设备发送。这些字符串采用以下格式:
"Acc Data:x_adc,y_adc,z_adc!"
每个字符串都以:
开头“Acc Data:
以
结束“!”
x_adc,y_adc和z_adc是值,长度为5位。
这些字符串定期发送。现在我可以使用InputStream
来使用字符串缓冲区接受这些字符串。我还能够在可滚动的TextView中显示完整的字符串,该字符串显示另一个字符串。
我想要做的是从字符串中分解x_adc,y_adc和z_adc值,并在3个单独的TextView中显示这些值。在将新字符串发送到Android智能手机后,需要刷新需要显示adc值的TextView。我尝试使用Pattern类和split()来分解字符串但却无法理解它们并在应用程序中使用它们。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
您可以使用substring()
清除额外数据,然后使用split()
:
String[] values = indata.substring(9, 26).split(",");
String x_adc = values[0];
...
答案 1 :(得分:1)
尝试:
private TextView tv1;
private TextView tv2;
private TextView tv3;
update("Acc Data:x_adc,y_adc,z_adc!");
public void update(String data) {
String values[] = data.replace("Acc Data:", "").replace("!", "").split(",");
String v1 = "";
String v2 = "";
String v3 = "";
if(values != null && values.length == 3) {
v1 = values[0];
v2 = values[1];
v3 = values[2];
}
tv1.setText(v1);
tv2.setText(v2);
tv3.setText(v3);
}
获取值的替代方法:
String values[] = data.substring(data.indexOf(':') + 1, data.indexOf('!')).split(",");
答案 2 :(得分:0)
只需查看字符串函数substring(beginIndex, endIndex)
即可抑制字符串的静态部分,split(",")
可获取3个值。
答案 3 :(得分:0)
此代码将处理>的实例3个令牌包含在String
。
public static void main(String[] args) {
String value = "Acc Data:x_adc,y_adc,z_adc!";
String trimmed = value.substring(value.indexOf(":")+1, value.length()-1);
String[] tokens = trimmed.split(",");
for(String token: tokens){
System.out.println(token);
}
}