Хорошо, поэтому я пишу приложение, которое должно иметь возможность извлечь номер НДС из счета (https://en.wikipedia.org/wiki/VAT_identification_number)
Самая большая проблема, которую необходимо преодолеть, заключается в том, что, как видно из статьи в Википедии, на которую я ссылаюсь, каждая страна использует свой собственный формат для этих номеров НДС (Нидерланды используют номер из 14 символов, а Германия использует номер из 11 символов).
Чтобы извлечь эти числа, я выбрасываю каждую строку из счета в массив строк, и для каждой строки я проверяю, имеет ли она длину, равную одному из форматов НДС, и если это проверяется, Я проверяю, содержит ли указанная строка также код страны («NL», «DE» и т. Д.).
string[] ProcessedFile = Reader.ProcessFile(Input);
foreach(string S in ProcessedFile)
{
RtBEditor.AppendText(S + "\n");
}
foreach(string X in ProcessedFile)
{
string S = X.Replace(" ", string.Empty);
if (S.Length == 7)
{
if (S.Contains("GBGD"))
{
MessageBox.Show("Land = Groot Britanie (Regering)");
}
}
/*
repeat for all other lenghts and country codes.
*/
Проблема с этим кодом в том, что 1-й:
если есть строка, длина которой совпадает с длиной одного из форматов НДС, и в нее встроен код страны, код будет ошибочно думать, что он нашел номер НДС.
второй:
В некоторых случаях номер НДС будет включен как «номер НДС: [номер НДС]». В этом случае текст, предшествующий фактическому номеру, будет добавлен к его длине, что сделает программу неспособной определить фактический номер НДС.
Лучший способ исправить это - это мое предположение как-то изолировать номер НДС от всех строк вместе, но мне еще предстоит найти способ, как на самом деле это сделать.
Кто-нибудь случайно знает какое-нибудь потенциальное решение?
Большое спасибо заранее!
EDIT:
Добавлен фиктивный счет, чтобы уточнить, какие данные содержатся в счетах.