我正在使用終端仿真程序庫創建終端,然後使用它將通過串行輸入的數據發送到串行設備。當數據發回時,我想解析它,並在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