Просто заметка, у вас есть дополнительный набор {
}
в вашем foreach
l oop, окружающем Console.Writeline()
, который вы можете удалить.
Если вы хотите сохранить все номер счета, как он выделен на вашем скриншоте («INV-3337» вместо просто «3337»), InvoiceNumbers
должен быть списком строк, а не целых.
Я предполагаю, что счет всегда идет чтобы быть одинаковым, или число всегда будет одинакового формата (т. е. "номер счета 'INV - ####"), вы можете просто добавить строку в ваш foreach
l oop. Поскольку каждый line
является строкой, вы можете проверить, содержит ли line
«Номер счета-фактуры». Если это так, вы можете добавить его к InvoiceNumbers
и удалить фразу «Номер счета». Затем обрежьте его, чтобы избавиться от любых пробелов. Либо выше, либо ниже Console.Writeline(line.ToString());
вы бы просто добавили:
if (line.Contains("Invoice Number"))
InvoiceNumbers.Add(line.Replace("Invoice Number", "").Trim());
(я использовал Replace()
вместо Remove()
, потому что вам нужно было бы знать начальную и конечную позиции фразы, которую вы хотите удалить. На мой взгляд, Replace()
- самый безопасный маршрут для данной конкретной ситуации)
Вы можете добавить break;
в оператор if
, если это все, что вы ищете. Это остановит foreach
l oop. После извлечения номера счета-фактуры нет смысла просматривать остальную часть документа, если только у вас нет нескольких счетов-фактур в одном документе.
if (line.Contains("Invoice Number"))
{
InvoiceNumbers.Add(line.Replace("Invoice Number", "").Trim());
break;
}
Если вы хотите выполнить поиск в списке для конкретного счета-фактуры число, этот ответ должен помочь с этим.
Это при условии , что единственной разницей будет фактическое число. Если это не так, вы всегда можете взглянуть на регулярные выражения и заставить его искать шаблон типа "INV- \ d *". Это также предполагает, что формат номера счета всегда один и тот же.