Нужна помощь в получении строковых значений после совпадений с регулярным выражением - PullRequest
1 голос
/ 04 октября 2019

У меня проблемы с попыткой упорядочить значения в базе данных. Должен ли я поместить значения совпадений в список, а затем в базу данных?

RegexWriter - это функция для записи в текстовый файл

Строковая черта предназначена для обновления черты в базе данных, если любое из полейпусты

using (var reader = new StreamWriter (DestinationTextBox.Text + "\\" + fileName))
{
    while (!reader.EndOfStream)
    {
        var lines = reader.ReadLine ();
        var values = line.split (',');

        foreach (string value in values)
        {
            Match MatchName = Regex.Match (value.ToString (), RegexName);
            Match MatchClass = Regex.Match (value.ToString (), RegexClass);
            Match MatchTime = Regex.Match (value.ToString (), RegexTime)

            if (MatchesName.Success) {
                RegexWriter (MatchesName.value, fileName);
            } else {
                string dash = "-";
                RegexWriter (dash, fileName);
            }

            if (MatchesClass.Success) {
                RegexWriter (MatchesClass.value, fileName);
            } else {
                string dash = "-";
                RegexWriter (dash, fileName);
            }

            if (MatchesTime.Success) {
                RegexWriter (MatchesTime.value, fileName);
            } else {
                string dash = "-";
                RegexWriter (dash, fileName);
            }
        }
    }
}

Ниже приведена функция RegexWriter

private void RegexWriter (string Input, fileName)
{
    string matchValue = Input;

    streamwriter = fileStreamWriter;
    fileStreamWriter = new StreamWriter (@"users\Admin\Desktop\DailyAttendance" + "\\" + fileName)
    fileStreamWriter.WriteLine(Input);
    fileStreamWriter.Flush();
    fileStreamWriter.Close();    

}

1 Ответ

0 голосов
/ 04 октября 2019

Не зная, что содержит каждый line или что такое RegexName, RegexClass или RegexType, я предполагаю, что вы перезаписываете значение поля, потому что последний оператор, который выполняется для каждого valueis:

if (MatchesTime.Success) {
    RegexWriter (MatchesTime.value, fileName);
} else {
    string dash = "-";
    RegexWriter (dash, fileName);
}

Предполагая, что регулярные выражения должны быть взаимоисключающими, я думаю, что вы на самом деле хотите:

if (MatchesName.Success) {
    RegexWriter (MatchesName.value, fileName);
} else if (MatchesClass.Success) {
    RegexWriter (MatchesClass.value, fileName);
} else if (MatchesTime.Success) {
    RegexWriter (MatchesTime.value, fileName);
} else {
    string dash = "-";
    RegexWriter (dash, fileName);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...