在netbeans

时间:2017-04-19 04:41:24

标签: java netbeans split

您好我是编程新手,需要为我的学校项目提取数据。数据来自Arduino设备,该设备发送的数据看起来像这样。

<call_sign>IVV-HAM</call_sign>
<mission_call>ARP</mission_call>
<absolute_time>13:13:13</absolute_time>
<elapsed_time>43</elapsed_time>
<imu_accel_x>240</imu_accel_x>
<imu_accel_y>196</imu_accel_y>
<imu_accel_z>62</imu_accel_z>
<imu_gyro_x>599</imu_gyro_x>
<imu_gyro_y>1013</imu_gyro_y>
<imu_gyro_z>215</imu_gyro_z>
<imu_mag_x>402</imu_mag_x>
<imu_mag_y>495</imu_mag_y>
<imu_mag_z>447</imu_mag_z>
<imu_temp>453</imu_temp>

我需要摆脱前三行然后发送剩下的代码来绘制。我试图Delimit和拆分尖括号但我知道怎么做似乎工作。 任何帮助意见或建议,我可以找到答案(我已经在这里看了一天)将不胜感激,谢谢。

 public void run(){
                    //create a new Scanner and connect it to the Serial Port
                    input = new Scanner(connectedPort.getInputStream());
                    //HERE I tried to use input.useDelimiter("></")
                    // I also tried to split by creating a string.split but   
                    // it did not work either.
                    //loop indefinitely until you get data from the Serial Port
                    while(input.hasNextLine()){
                        //get line of text from serial port
                        String line = input.nextLine();

                        //dump the raw data to the output text area
                        //taRawOutput.append(Integer.toString(number)+'\n');
                        textArea_RawData.append(line+"\n");
                    }//end of loop

                    //close the scanner object reading from the serial port
                    input.close();
                }//end of methd run()
            };//end of inner class definition

            //start the thread that was just defined running
            thread.start();

        }catch(IOException e){
            JOptionPane.showMessageDialog(this, e.getMessage());
        }//end of catch block
    }  

我尝试编辑问题以显示我的所作所为。

2 个答案:

答案 0 :(得分:1)

您需要在开放括号之前拆分,而不是在它后跟斜杠时拆分。而你需要拆分才能消耗支架。所有这一切都可以通过展望完成。

试试这个:

scanner.useDelimiter("(?=<[^/])");

然后,每次拨打scanner.next()时,您都会阅读整个标签。

正则表达式意味着“以下字符是<然后是一个不是斜杠的字符”并且它不会消耗任何输入(匹配是零长度,实际上之间< / em> characters)

答案 1 :(得分:0)

我决定放弃分隔并使用带有&#34; indexOf的矢量(&#34;&gt;&#34;)+ 1,lastIndexOf(&#34;&lt;&#34;)&# 34;我知道它已经过时但它适用于我的目的。它包含我需要的数据,并可以发送到我需要的不同图表。 感谢您的帮助,但我很感激。