我正在使用终端仿真程序库创建终端,然后使用它将通过串行输入的数据发送到串行设备。当数据发回时,我想解析它,并在editText中向用户显示最重要的信息。目前我收到字节数组/块,并将它们转换为字符串。当我得到一个\ r或一个\ n我crete一个新的字符串,并重复这个过程。这是对大多数命令,但有些命令返回结果多行像“秀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“
非常感谢,我会接受你的回答。我喜欢回声选项,这将部分适用于我(只适用于atm按钮),需要思考。不幸的是,客户可以将开关名称更改为任何他们想要的东西,我只是想过,但它总是以#结尾。由于这个原因,我可能需要更改我的代码,也许在检查之前有一个带有字母的散列。谢谢,根据命令我会处理任何输出,幸运的是我编码的实际开关也知道不会有太大的偏差。 – Paul