выполнение команды с использованием длинного текста s sh. net как разобрать этот backspace? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть большой проект, который подключается ко многим устройствам через SSH.NET

У меня есть проблема, когда я делаю shells.Read() и получаю длинную строку на выходе, например

"description <XC descritption long , id123123123 IP:120.120.120.20 VC\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b$ <XC descritption long, id123123123  IP:120.120.120.20 VCI         \b\b\b\b\b\b\b\b\bD:2500\r\ndescription <XC descritption long, id123123123  IP:120.120.120.20 VCID:2500\r\n  ^\r\n% Invalid input detected at '^' marker.\r\n\r\ngateway2#"

Я немного погуглил и обнаружил, что это какой-то способ отправить длинные строки для вывода, если они не помещаются внутри одной строки этого «окна виртуального терминала»?

мой вопрос: как проанализировать его программно без какого-либо текстового поля, которое будет делать это автоматически, поэтому я получаю то, что мне нужно, только

 description <XC descritption long, id123123123  IP:120.120.120.20 VCID:2500\r\n  ^\r\n% Invalid input detected at '^' marker.\r\n\r\ngateway2#"

? мне нужно будет посчитать это \b и сделать резку по их количеству? или это какой-то «правильный» способ сделать это?

спасибо и всего наилучшего!

1 Ответ

1 голос
/ 29 мая 2020

Вам нужно проанализировать обратные пробелы и удалить предыдущий символ (если он существует).

Я бы использовал следующий метод:

public static string ParseBackspaces(string input)
{
    List<char> characters = new List<char>(input);
    int index = 0;
    while (index < characters.Count)
    {
        int back1 = index - 1;
        if (back1 >= 0 && characters[index] == '\b')
        {
            characters.RemoveRange(back1, 2);
            index = back1;
            continue;
        }
        else if (characters[index] == '\b')
        {
            characters.RemoveAt(index);
            continue;
        }
        index++;
    }
    return new String(characters.ToArray());
}

Вот скрипка, показывающая вашу строку после анализа этим методом: https://dotnetfiddle.net/79U8sH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...