Как разобрать текстовый файл c # и получить правильные данные результата - PullRequest
0 голосов
/ 04 февраля 2019

Я анализирую текстовый файл для получения данных настроек для Bluetooth:

Это значение может быть отключено или включено и помечено *.

Проблема, с которой я сталкиваюсь, заключается в том, что она всегдавозвращение статуса «Включено» независимо от того, отключено оно или нет.

Может ли это быть из-за того, что текст, из которого он читает, имеет вкладку перед строками с отступом.Как я могу исправить это для работы?

  private String GetBluetoothStatus(String FilePath)
{
    String[] lines = File.ReadAllLines(FilePath);
    int index = 0;
    string status = "";
    foreach (String s in lines)
    {
        if (s == "Bluetooth")
        {
            if (lines[index + 1].StartsWith("*"))
                status = "Disabled";
            else
                status = "Enabled";
            return status;
        }
        index += 1;
    }
    return status;
}

Текстовый файл ниже:

BIOSConfig 1.0
;
;     Originally created by BIOS Configuration Utility
;     Version: 4.0.25.1
;     Date="2018/08/06" Time="15:42:35" UTC="-5"
;
;     Found 182 settings
;
Power On When AC Detected
    *Disabled
    Enabled
Power On When Lid is Opened
    *Disabled
    Enabled
Fast Boot
    *Disable
    Enable
Bluetooth
    Disabled
    *Enabled
Wireless Network Device (WLAN)
    Disabled
    *Enabled
LAN / WLAN Auto Switching
    Disabled
    *Enabled

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Вы делаете lines[index + 1].StartsWith("*"), но если мы смотрим ваш файл конфигурации, он начинается с пробела / табуляции.

Попробуйте проверить lines[index + 1].Trim().StartsWith("*"), чтобы удалить этот пробел / табуляцию перед проверкой значения.

Если триммер не работает, попробуйте lines[index + 1].Replace("\t", " ").Replace(" ","").StartsWith("*");

0 голосов
/ 04 февраля 2019

Измените следующую строку

if (lines[index + 1].StartsWith("*"))

на

  if (lines[index + 1].Trim().StartsWith("*Disabled"))

Лучше использовать Contains, например, как вы упомянули, что Enable Disable также может появляться в той же строке.

if (lines[index + 1].Contains("*Disabled"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...