Uwakpeter Ответов: 3

Как разделить числа из строки в C#


У меня есть список стран в таком строковом формате:

123 США, Америка
126 Южная Африка, Африка

я хочу иметь возможность разделить код страны, название страны и континент и сохранить в списке или массиве, код страны будет иметь индекс[0], название страны[1] и континент[2] в таком порядке.

Я уже пробовал это сделать:

Что я уже пробовал:

string number = "123 USA, America";
 string[] numbers = number.Split(',');





это только разделило строку на две части: "123 USA" и "America", я хочу также иметь возможность получить числовую часть.

3 Ответов

Рейтинг:
26

phil.o

Вы также можете использовать регулярное выражение для получения различных частей:

using System.Text.RegularExpressions;
// ...
const string pattern = @"^(?<number>\d+)\s*(?<country>[^,]+),\s*(?<continent>[^,]+)$";

string test1 = "123 USA, America";
string test2 = "126 South Africa, Africa";

Regex r = new Regex(pattern, RegexOptions.Compiled);

Match m = r.Match(test1);
int number = int.Parse(m.Groups["number"].Value); // 123
string country = m.Groups["country"].Value; // USA
string continent = m.Groups["continent"].Value; // America

m = r.Match(test2);
number = int.Parse(m.Groups["number"].Value); // 126
country = m.Groups["country"].Value; // South Africa
continent = m.Groups["continent"].Value; // Africa


Uwakpeter

Спасибо, Фил.О, это работает.

Рейтинг:
2

RickZeeland

using System.Linq;

	string test = " 123 abc";
	string nums = new String(test.Where(Char.IsDigit).ToArray());


Рейтинг:
0

OriginalGriff

Попробуй:

    string number = "123 USA, America";
    string[] numbers = number.Split(splitChars, StringSplitOptions.RemoveEmptyEntries);
...
private char[] splitChars = " ,".ToArray();