如何在获取后从变量中删除字符串?

时间:2016-09-19 00:24:57

标签: java netbeans

vsri

我想从变量public class PortReader implements SerialPortEventListener { @Override public void serialEvent(SerialPortEvent event) { while(event.isRXCHAR() && event.getEventValue() > 0) { try { String receivedData = serialPort.readString(event.getEventValue()); tempData = tempData.concat(receivedData); System.out.println(tempData); } catch (SerialPortException ex) { System.out.println("Error in receiving response from port: " + ex); } } } } 中删除字符串。如果我将tempData放在tempData = "";的末尾。我不知道为什么?有人能帮我解决这个问题吗?如果我不从变量中删除字符串,那么几分钟后我的CPU使用率就会过高。我从GPS天线接收字符串,我从中获取NMEA。

1 个答案:

答案 0 :(得分:0)

使用StringBuffer或StringBuilder执行此类活动,在String上执行此操作在内存方面将是一项代价高昂的操作。 此外,它看起来你想从字符串中删除空格使用trim()函数之前附加到StringBuffer

public class PortReader实现了SerialPortEventListener {

StringBuffer sb = StringBuffer();

@Override
public void serialEvent(SerialPortEvent event) {
    while (event.isRXCHAR() && event.getEventValue() > 0) {
        try {
            String receivedData = serialPort.readString(event
                    .getEventValue());
            // check if string is not null before trim
            sb.append(receivedData == null ? "" : receivedData.trim());
            sb.append(",");
            //just print the receivedData in plac of whle sb again and again
            System.out.println(receivedData);
        } catch (SerialPortException ex) {
            System.out.println("Error in receiving response from port: "
                    + ex);
        }
    }
    //check if the comma is the last index if so remove that
    String tmpData = sb.toString();
    tmpData = tmpData.replaceAll(", $", "");
    //print the entire data now
    System.out.println(tmpData);

}

}