List<int> ids = ExtractIds("United Kingdom (656) - Aberdeen (7707)");
Вышеприведенный список должен быть заполнен описанным ниже способом, который разделяет значения из круглых скобок.Как преобразовать регулярное выражение match.Value в integer?
Если я использую match.Value как строку и присваиваю ей список < string> он работает нормально. Но когда я пытаюсь преобразовать его в целое число, я получаю ошибку: «Строка ввода не была в правильном формате».
Что я делаю неправильно?
public List<int> ExtractIds(string str)
{
MatchCollection matchCollection = Regex.Matches(str, @"\((.*?)\)");
List<int> ExtractedIds = new List<int>();
foreach (Match match in matchCollection)
{
int theid = int.Parse(match.Value);
ExtractedIds.Add(theid);
}
return ExtractedIds;
}
в других языках 0-й матч представляет собой полную строку соответствия ... Непонятно, что C#, но кажется хорошим местом для поиска – Lucas
Вы скопируете что-нибудь в скобках - вы, вероятно, хотите '\ d +' вместо '. *? '. – cfeduke
Вы не используете отладчик. Узнайте, что такое match.Value * is *, и вы поймете, что пошло не так. – nvoigt