我正在使用终端仿真器库来创建终端,然后使用它将通过串行输入的数据发送到串行设备。当数据被发回时,我想解析它并在editText中向用户显示最重要的信息。目前我收到字节数组/块并将它们转换为字符串。当我得到一个 \r 或 \n 时,我创建一个新字符串并重复该过程。这对于大多数命令来说都很好,但是有些命令会通过多行返回结果,例如此处的“show vlan”:
当我遍历这个时,我得到每一行的字符串。例如,第一个将包含 VLAN 名称状态和端口。所以现在我有一个问题,我怎样才能让 VLAN 1 有 x 个端口处于活动状态。它们在不同的字符串中。这是我对一行感兴趣的当前更简单命令的代码和屏幕截图:
Handler viewHandler = new Handler();
Runnable updateView = new Runnable() {
@Override
public void run() {
mEmulatorView.invalidate();
if (statusBool == true) {
for (int i = 0; i < dataReceived.length(); i++) {
parseCommand = parseCommand + dataReceived.charAt(i);
if (dataReceived.charAt(i) == '\n' || dataReceived.charAt(i) == '\r'){
if(parseCommand.contains("KlasOS"))
{
String[] tokens = parseCommand.split("\\s{1,}");
final String ReceivedText = mReceiveBox.getText().toString() + " "
+ new String("Software Version: " + tokens[1] + "\n" );
runOnUiThread(new Runnable() {
public void run() {
mReceiveBox.setText(ReceivedText);
mReceiveBox.setSelection(ReceivedText.length());
}
});
}
parseCommand = "";
}
}
statusBool = false;
viewHandler.postDelayed(updateView, 1000);
}
}
};
现在我想改变它,这样我就可以处理多行了。如果字符串包含某些信息,最好的方法是存储字符串吗?
我需要在右手editText上输出这个:
"以下端口在 vlan 1 上:Fa1/0, fa1/1, fa1/2, fa1/3, fa1/4, fa1/5, fa1/6, fa1/7, fa1/8, fa1/9, fa1 /10, fa1/11, Gi0"