在Android应用程序中分解字符串

时间:2013-06-03 08:42:02

标签: java android bluetooth

我正在尝试用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()来分解字符串但却无法理解它们并在应用程序中使用它们。

有人可以帮我解决这个问题吗?

4 个答案:

答案 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);
    }
}