📜  c# 从字符串中获取数字 - C# (1)

📅  最后修改于: 2023-12-03 15:13:50.344000             🧑  作者: Mango

C# 从字符串中获取数字

在C#编程中,有时我们需要从字符串中获取数字并进行加减乘除等运算。本文将介绍获取数字的几种常见方法。

1. 使用int.Parse()方法

我们可以使用int.Parse()方法将字符串转换为整型数字。

string str = "123";
int num = int.Parse(str);

这里的字符串为"123",使用int.Parse()方法将其转换为整型数字,存储在num变量中。

但是,如果字符串中包含非数字字符,则会抛出异常。所以我们需要先判断字符串是否为数字类型,才能进行转换。

try {
    string str = "123abc";
    int num = int.Parse(str);
}
catch (FormatException ex) {
    Console.WriteLine("字符串不是数字类型,转换失败!错误信息:{0}", ex.Message);
}
2. 使用int.TryParse()方法

如果我们不想使用异常处理来判断字符串是否为数字类型,可以使用int.TryParse()方法。它会返回一个bool值,表示转换是否成功。

string str = "123abc";
int num;
bool result = int.TryParse(str, out num);

if (result) {
    Console.WriteLine("转换成功,num的值为{0}", num);
}
else {
    Console.WriteLine("字符串不是数字类型,转换失败!");
}
3. 使用正则表达式

除了使用方法,我们还可以使用正则表达式提取字符串中的数字。

string str = "abc123def456ghi789";
string pattern = @"\d+";

MatchCollection matches = Regex.Matches(str, pattern);

foreach (Match match in matches) {
    Console.WriteLine("找到数字:{0}", match.Value);
}

这里的正则表达式为"\d+",代表匹配至少一个数字。MatchCollection返回所有匹配到的数字。

4. 使用LINQ

我们可以使用LINQ来从字符串中获取数字。

string str = "abc123def456ghi789";

var numArray = str.Where(c => char.IsNumber(c)).ToArray();
int[] nums = Array.ConvertAll(numArray, c => (int)Char.GetNumericValue(c));

foreach (var num in nums) {
    Console.WriteLine("找到数字:{0}", num);
}

这里的代码使用了Where和ToArray方法来筛选字符数组中的数字,再使用ConvertAll将字符数组转换为整型数组。