从字符串获取数字并粘上字符

时间:2018-10-02 10:23:36

标签: c# .net

我需要恢复粘贴字符串中的每个数字

例如,从以下字符串中:

string test = "number1+3"
string test1 = "number 1+4"

我想恢复(1和3)和(1和4) 我该怎么办?

代码

 string test= "number1+3";
 List<int> res; 

 string[] digits= Regex.Split(test, @"\D+");
 foreach (string value in digits)
 {
     int number;
     if (int.TryParse(value, out number))
     {
         res.Add(number)
     }
 }

3 个答案:

答案 0 :(得分:2)

此正则表达式应该有效

string pattern = @"\d+";
string test = "number1+3";

foreach (Match match in Regex.Matches(test, pattern))
   Console.WriteLine("Found '{0}' at position {1}", 
                     match.Value, match.Index);

请注意,如果您打算多次使用它,出于性能原因,最好创建一个Regex实例,而不是使用此静态方法。

var res = new List<int>();

var regex = new Regex(@"\d+");

void addMatches(string text) {
    foreach (Match match in regex.Matches(text))
    {
        int number = int.Parse(match.Value);
        res.Add(number);
    }
}

string test = "number1+3";
addMatches(test);

string test1 = "number 1+4";
addMatches(test1);

MSDN link

Fiddle 1

Fiddle 2

答案 1 :(得分:1)

这需要一个正则表达式:

(\d+)\+(\d+)

Test it

Match m = Regex.Match(input, @"(\d+)\+(\d+)");

string first = m.Groups[1].Captures[0].Value;
string second = m.Groups[2].Captures[0].Value;

答案 2 :(得分:1)

正则表达式的替代方法:

string test = "number 1+4";

int[] numbers = test.Replace("number", string.Empty, StringComparison.InvariantCultureIgnoreCase)
                    .Trim()
                    .Split("+", StringSplitOptions.RemoveEmptyEntries)
                    .Select(x => Convert.ToInt32(x))
                    .ToArray();
相关问题