Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android应用程序中字符串的分解_Java_Android_Bluetooth - Fatal编程技术网

Java Android应用程序中字符串的分解

Java Android应用程序中字符串的分解,java,android,bluetooth,Java,Android,Bluetooth,我正在尝试用Java为Android手机编写一个Android应用程序。Android应用程序使用SPP配置文件通过蓝牙读取串行数据字符串。这些字符串由另一个蓝牙设备发送。这些字符串的格式如下: "Acc Data:x_adc,y_adc,z_adc!" 每个字符串以以下内容开头: “行政协调会数据: 以 “!" x_adc、y_adc和z_adc是值,长度为5位 这些字符串以固定的间隔发送。现在我可以使用InputStream使用字符串缓冲区接受这些字符串。我还可以在可滚动的文本视图中显示完

我正在尝试用Java为Android手机编写一个Android应用程序。Android应用程序使用SPP配置文件通过蓝牙读取串行数据字符串。这些字符串由另一个蓝牙设备发送。这些字符串的格式如下:

"Acc Data:x_adc,y_adc,z_adc!"
每个字符串以以下内容开头:

“行政协调会数据:

“!"

x_adc、y_adc和z_adc是值,长度为5位

这些字符串以固定的间隔发送。现在我可以使用
InputStream
使用字符串缓冲区接受这些字符串。我还可以在可滚动的文本视图中显示完整的字符串,其中每个字符串显示在另一个字符串的下方

我想做的是从字符串中分解x_adc、y_adc和z_adc值,并在3个单独的文本视图中显示这些值。需要显示adc值的文本视图必须在新字符串发送到Android智能手机后刷新。我尝试使用Pattern类和split()分解字符串,但未能理解它们并在应用程序中使用它们


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

您可以使用
substring()
清理额外的数据,然后
split()

String[] values = indata.substring(9, 26).split(",");
String x_adc = values[0];
...

您可以使用
substring()
清理额外的数据,然后使用
split()

String[] values = indata.substring(9, 26).split(",");
String x_adc = values[0];
...

只需在字符串函数
子字符串(beginIndex,endIndex)
上加一个lood,即可抑制字符串的静态部分,并
拆分(“,”)
即可获得3个值。

只需在字符串函数
子字符串(beginIndex,endIndex)
上加一个lood,即可抑制字符串的静态部分并
拆分(“,”)
获取3个值。

尝试:

    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(",");
尝试:

获取值的另一种方法:

String values[] = data.substring(data.indexOf(':') + 1, data.indexOf('!')).split(",");

此代码将处理
字符串中包含>3个令牌的实例

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

此代码将处理
字符串中包含>3个令牌的实例

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

你尝试了什么?为什么失败了?你尝试了什么?为什么失败了?你好britzl,谢谢你的帮助。你的例子奏效了!你好WillemHello britzl,谢谢你的帮助。你的例子奏效了!你好Willem