Найти вхождение даты ГГГГммДД в переменную строкуC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Найти вхождение даты ГГГГммДД в переменную строку

Сообщение Anonymous »

Предположим, у меня есть строка, содержащая даты в формате ГГГГммДД, но в переменной позиции, а также другие числовые последовательности.
Например:
xx12x20240113yyyy123zzzz
20240201xxxx34yyy
xxxxxx202400315yyy1224zzz

Есть ли простой способ найти и извлечь последовательность чисел даты или мне следует попытаться прочитать все последовательности в цикле и протестировать их одну за другой?
Сейчас я использую цикл, но хотелось бы найти более элегантный способ.
В данный момент я использую вот что: р>
private bool InvoiceData(string Filename, out string Invoice, out String InvoiceDate, out string Error)
{
bool Esito = false;
Invoice = "";
InvoiceDate = "";
Error = "";

try
{
int nPos = 0;
int nPos2 = 0;
string sTemp = Filename;
string sTemp2 = "";

while ((nPos = sTemp.IndexOfAny("0123456789".ToCharArray())) >= 0)
{
sTemp2 = sTemp.Substring(nPos, 8);
if (sTemp2.All(char.IsNumber))
{
string[] formats = { "yyyyMMdd" };
if (InvoiceDate == "" && DateTime.TryParseExact(sTemp2, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dDataFattura))
{
InvoiceDate = dDataFattura.ToString("yyyMMdd");
}
}
else
{
if (Invoice == "")
{
nPos2 = sTemp.Substring(nPos).IndexOf("_"); // This is by Design
Invoice = Filename.Substring(nPos, nPos2);
}
}

nPos2 = 0;
while (Char.IsDigit(sTemp2[nPos2++]) && nPos2 < sTemp2.Length) { }
sTemp = sTemp.Substring(nPos + nPos2);
}
if (InvoiceDate != "" && Invoice != "") { Esito = true; }
}
catch (Exception ex)
{
Error = ex.Message;
}
return Esito;
}


Подробнее здесь: https://stackoverflow.com/questions/782 ... ble-string
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»