【问题标题】:Separate integers starting with specific number in c#在c#中以特定数字开头的分隔整数
【发布时间】:2021-07-03 00:18:06
【问题描述】:

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

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 4005 塔哈梅德·卡里姆 上午 10 点 41 分 4085 SHAHRIA ILTIMAS 上午 10:41 4007 萨克·蒙希 10:41 AM 4038

输出显示如下:

卷号: 10414005104140851041400710414038

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

卷号: 4005、4085、4007、4038

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

【问题讨论】:

  • 您显示的代码只是从字符串中删除了字符“D”。它对数字没有任何作用。作为旁注,我强烈建议不要使用 var 作为变量名,因为它是 C# 中的上下文关键字。

标签: c# regex c#-4.0 c#-3.0 c#-2.0


【解决方案1】:

你可以试试RegexmatchingLinq组合:

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 或更多数字的整数(为了摆脱10:41 片段中的1041

【讨论】:

  • 你能告诉我整个代码应该是什么样子吗?或在哪里放置您刚刚在此处提供的代码?我是 C# 的初学者。
  • @Acp Siam:我已经编辑了答案 - 现在是整个 Main 方法实现
【解决方案2】:

使用匹配:

           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));

【讨论】:

  • 我怀疑"\d+" 模式:请注意示例中的10:41 AM 片段; 1041 不应匹配
  • @DmitryBychenko : 你可以使用 "4\d+" 操作说以 "4" 开头并且没有明确说忽略 41。
猜你喜欢
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多