从字符串中获取特定数字

时间:2012-05-05 18:44:55

标签: c# string split

在我目前的项目中,我必须使用子字符串,我想知道是否有更简单的方法从字符串中获取数字。

实施例: 我有一个像这样的字符串: 12文本文本7文本

我希望能够获得第一个数字集或第二个数字集。 因此,如果我要求数字集1,我将获得12作为回报,如果我要求数字集2,我将获得7作为回报。

谢谢!

5 个答案:

答案 0 :(得分:7)

这将从字符串中创建一个整数数组:

using System.Linq;
using System.Text.RegularExpressions;

class Program {
    static void Main() {
        string text = "12 text text 7 text";
        int[] numbers = (from Match m in Regex.Matches(text, @"\d+") select int.Parse(m.Value)).ToArray();
    }
}

答案 1 :(得分:1)

看起来很适合Regex

基本正则表达式将\d+匹配(一个或多个数字)。

您将遍历从Matches返回的Regex.Matches集合,并依次解析每个返回的匹配。

var matches = Regex.Matches(input, "\d+");

foreach(var match in matches)
{
    myIntList.Add(int.Parse(match.Value));
}

答案 2 :(得分:1)

尝试使用正则表达式,您可以匹配[0-9]+,它将匹配字符串中的任何数字运行。使用此正则表达式的C#代码大致如下:

Match match = Regex.Match(input, "[0-9]+", RegexOptions.IgnoreCase);

// Here we check the Match instance.
if (match.Success)
{
    // here you get the first match
    string value = match.Groups[1].Value;
}

您当然还需要解析返回的字符串。

答案 3 :(得分:0)

您可以使用正则表达式:

Regex regex = new Regex(@"^[0-9]+$");

答案 4 :(得分:0)

你可以使用string.Split将字符串拆分成部分,然后使用foreach应用int.TryParse遍历列表,如下所示:

string test = "12 text text 7 text";
var numbers = new List<int>();
int i;
foreach (string s in test.Split(' '))
{
     if (int.TryParse(s, out i)) numbers.Add(i);
}

现在数字有有效值列表