터미널 에뮬레이터 라이브러리를 사용하여 터미널을 만든 다음 직렬을 통해 입력 한 데이터를 직렬 장치로 보내는데 사용합니다. 데이터를 다시 보내면 구문 분석하고 editText에서 사용자에게 가장 중요한 정보를 표시하려고합니다. 현재 바이트 배열/청크를 받고 문자열로 변환합니다. 내가 \ r 또는 \ n을 얻었을 때 나는 새로운 문자열과 프로세스를 반복한다. 이것은 대부분의 명령에 대한 괜찮 그러나 일부 명령은 여기에 "쇼 VLAN을"과 같은 여러 줄에 걸쳐 결과를 반환 :여러 문자열에서 텍스트를 구문 분석하는 방법은 무엇입니까?
는이를 통해 내가 루프는 내가 각 라인에 대한 문자열을 얻을 때. 첫 번째는 VLAN Name Status와 Ports를 예로들 수 있습니다. 그래서 지금 문제가 있습니다. 어떻게 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);
}
}
};
지금 나는 이것이 내가 여러 줄을 처리 할 수 변경하려면 다음은 코드와 스크린 샷 내가 한 줄에 관심이 전류 쉽게 명령입니다. 문자열에 특정 정보가 포함되어 있다면 문자열을 저장하는 것이 가장 쉬운 방법일까요?
"다음 포트 VLAN 1이다 : FA1/0, FA1/1 FA1/2 FA1/3 FA1/4 FA1/5
는 I이 오른쪽 EDITTEXT에 출력해야 , fa1/6, fa1/7, fa1/8, fa1/9, fa1/10, fa1/11, Gi0 "
매우 흥미 롭습니다. 답변을 수락하겠습니다. 나는 부분적으로 나를 위해 일하는 에코 옵션을 좋아한다. 불행히도 고객은 원하는대로 스위치 이름을 변경할 수 있습니다. 그러나 나는 #에 끝날 것입니다. 이 때문에 지금 코드를 변경해야 할 수도 있습니다. 아마도 그 전에 문자가있는 해시가 있는지 확인할 수 있습니다. 감사합니다. 명령에 따라 출력을 다룰 것입니다. 다행스럽게도 실제 스위치를 코딩하므로 많은 편차가 없을 것입니다. – Paul