Как узнать тип переменной из регулярного выражения?
После каждой "ячейки" (кроме ячеек с номерами) напишите тип данных этой ячейки.
№ Серия Наименование Дополнение
1 677492 12Тм_54 Допол
1 Привет 76 1з
7 654 Это Твоё
2 Тестовое -=-=-= СимволыИлиНет?
0 Задание ЉµЉ 1787_-_?
2147483747 Удачи На_полях Правосудия
Пример: 654 - short 76 - sbyte 1з - string
Пытался сделать это через регулярные выражения, получилось нечто вроде такого:
Regex regex = new Regex(@"(?<номер>\d+)\s{1,}(?<серия>(\S+|[_]))\s{1,}(?<наименование>(\S+|[_]))\s{1,}(?<дополнение>(\S+|[_]))");
foreach (var str in updatestr)
{
Console.WriteLine(Regex.Replace(str, regex.ToString(), "${номер}\t\t${серия}\t\t${наименование}\t\t${дополнение}"));
}
Ну и собственно сам вопрос: как узнать тип данных у переменной из регулярного выражения (?<номер>\d+)?
Ответы (1 шт):
Автор решения: luc1f
→ Ссылка
Спасибо комментатору @aepot за идею.
Regex regex = new Regex(@"(?<номер>\d+)\s{1,}(?<серия>(\S+|[_]))\s{1,}(?<наименование>(\S+|[_]))\s{1,}(?<дополнение>(\S+|[_]))");
string[] smth = regex.GetGroupNames();
foreach (var str in updatestr)
{
MatchCollection temp = regex.Matches(str);
Match match = regex.Match(str);
Console.WriteLine(Regex.Replace(str, regex.ToString(),
"${номер}\t\t${серия}-{0}\t\t${наименование}-{1}\t\t${дополнение}-{2}"),
ShowType(match.Groups["серия"].Value),
ShowType(match.Groups["наименование"].Value),
ShowType(match.Groups["дополнение"].Value));
}
private static string ShowType(string str)
{
string myTypeStr = "string";
if (long.TryParse(str, out _)) myTypeStr = "long";
if (int.TryParse(str, out _)) myTypeStr = "int";
if (short.TryParse(str, out _)) myTypeStr = "short";
if (byte.TryParse(str, out _)) myTypeStr = "byte";
return myTypeStr;
}
Может код и кривой, но работает