c#中以特定数字开头的分隔整数

Separate integers starting with specific number in c#

我想编写一个程序,将整数与长段落分开。我写了这段代码:

using System;
using System.Text.RegularExpressions;

namespace hhhhh
{

    public class Program 
    {
        public static void Main()
        {
            string roll;
            roll = Console.ReadLine();
            
            string var = roll;
                                    
            string mynumber = Regex.Replace(var, @"D", "");
            
            Console.WriteLine("Roll Numbers: " + mynumber);
            
        }
    }
}

它工作正常,但问题是它将段落中的所有数字放在一起。比如,如果我将其粘贴为 string roll:

JAKARIA MAHMUD 10:41 AM 4005 TAHAMEED KARIM 10:41 AM 4085 SHAHRIA ILTIMAS 10:41 AM 4007 SAKER MUNSHI 10:41 AM 4038

输出显示如下:

Roll Numbers: 10414005104140851041400710414038

但我希望程序只分隔以 4 开头的整数,并且它们不应该在一起,而是分开的数字。像这样:

Roll Numbers: 4005, 4085, 4007, 4038

我该怎么做?这是我大学的出勤报告。

您可以尝试Regex 匹配Linq组合:

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

...

public static void Main() {
  string roll = Console.ReadLine();

  string result = string.Join(", ", Regex
    .Matches(roll, "[0-9]{4,}")
    .Cast<Match>()
    .Select(match => match.Value));

  Console.WriteLine("Roll Numbers: " + result);
}

我使用了 [0-9]{4,} 模式,它只匹配 4 或更多数字的整数(为了摆脱 104110:41片段)

使用匹配:

           string pattern = @"\d+";
            string input = "JAKARIA MAHMUD 10:41 AM 4005 TAHAMEED KARIM 10:41 AM 4085 SHAHRIA ILTIMAS 10:41 AM 4007 SAKER MUNSHI 10:41 AM 4038";

            MatchCollection matches = Regex.Matches(input, pattern);
            var results = string.Join(",", matches.Cast<Match>().Select(x => x.Value));