📌  相关文章
📜  获取字符串中的第一个数字 C# (1)

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

获取字符串中的第一个数字 C#

在编程中,我们有时需要从字符串中提取数字。下面提供几种方法,以C#为例:

使用Regex类

Regex类是一个用于处理正则表达式的强大工具。使用该类可以很方便地从字符串中提取数字。

using System.Text.RegularExpressions;

string str = "ABC123EFG";
string pattern = @"\d+";
Regex regex = new Regex(pattern);
Match match = regex.Match(str);

if (match.Success)
{
    string numStr = match.Value;
    int num = int.Parse(numStr);
    // num为123
}

解释:

  • 使用@符号声明字符串,以避免转义字符。
  • 确定搜索模式,可以使用\d来代表数字,+表示一个或多个。
  • 使用 Regex.Match()方法从字符串中找到第一个匹配正则表达式的子字符串。
  • 使用 Match.Success判断是否找到了匹配项。
  • 使用 Match.Value获取匹配的字符串。
  • 使用 int.Parse将匹配的字符串转换为整数类型。
使用LINQ

另一个从字符串中提取数字的方法是使用LINQ。

string str = "ABC123EFG";
string numStr = new string(str.Where(c => char.IsDigit(c)).ToArray());

if (!string.IsNullOrEmpty(numStr))
{
    int num = int.Parse(numStr);
    // num为123
}

解释:

  • 使用LINQ表达式筛选出字符串中的数字字符。
  • 使用 new string(char[])构造一个新的字符串对象。
  • 仍然使用 int.Parse 将提取出来的数字字符串转换为数字。
使用循环

使用循环也可以从字符串中提取数字。

string str = "ABC123EFG";
string numStr = "";
for (int i = 0; i < str.Length; i++)
{
    if (char.IsDigit(str[i]))
    {
        numStr += str[i];
    }
    else if (numStr != "")
    {
        break;
    }
}

if (!string.IsNullOrEmpty(numStr))
{
    int num = int.Parse(numStr);
    // num为123
}

解释:

  • 使用 for循环遍历字符串中的每个字符。
  • 判断字符是否为数字字符,并将其拼接在 numStr 变量中。
  • 如果在字符遍历过程中出现非数字字符,且 numStr 变量中已有数字字符,退出循环。
  • 仍然使用 int.Parse 将提取出来的数字字符串转换为数字。

以上三种方法各有优缺点,开发者可以根据实际需求选择使用哪种方法。