C# 匹配所有数字,但拆分为单个字符

C# 匹配所有数字,但拆分为单个字符,c#,.net,regex,C#,.net,Regex,这是我的字符串: 你好,世界,4567是我的号码 如果.NET中支持/g(全局修饰符),那么获得我想要的内容是没有问题的,但是现在,我不知道该怎么做,需要您的帮助。我需要匹配所有数字(4567),但要拆分为单个字符。我想要这样: 比赛1:4, 比赛2:5, 比赛3:6, 比赛4:7 谢谢, Alireza您可以使用它来获取所有匹配项,即您案例中的数字 var matches = Regex.Matches("Hello world, '4567' is my number.", "\\d");

这是我的字符串:

你好,世界,4567是我的号码

如果.NET中支持
/g
(全局修饰符),那么获得我想要的内容是没有问题的,但是现在,我不知道该怎么做,需要您的帮助。我需要匹配所有数字(
4567
),但要拆分为单个字符。我想要这样:

比赛1:4, 比赛2:5, 比赛3:6, 比赛4:7

谢谢, Alireza

您可以使用它来获取所有匹配项,即您案例中的数字

var matches = Regex.Matches("Hello world, '4567' is my number.", "\\d"); 
    foreach(Match match in matches)
       Console.WriteLine(match.Value);
没有分离:
var matches=Regex.matches(“你好,世界,'4567'是我的号码679。”,“\\d”);
for(int i=0;i
如果字符串中有不止一个数字,它也可以工作

输出:

比赛1:4

比赛2:5

比赛3:6

比赛4:7

比赛5:6

比赛6:7

比赛7:9

带,分隔:
var matches=Regex.matches(myString,\\d”);
字符串结果=string.Empty;
for(int i=0;i
输出:

比赛1:4,比赛2:5,比赛3:6,比赛4:7,比赛5:6,比赛6:7,比赛7:9


我知道这个问题已经用Regex标记,但是这里有另一个没有Regex的选项

foreach (var item in "Hello world, '4567' is my number.".Where(char.IsDigit))
{
    Console.WriteLine(item);
}

尝试此方法以获得多个匹配项。谢谢Adil。我在想
Regex.Matches()
方法不支持我想要的东西。谢谢。在我的情况下,使用正则表达式具有更好的性能和可读性。我给你的帖子加1是因为它教了一些好东西。@Alireza,可读性嗯,我不是很确定,我不是正则表达式的专家,我发现它很难阅读,性能,我相信这个解决方案的性能会超过正则表达式。您可能会看到:,尝试将迭代次数增加到1000万次,由于时间限制,我无法在ideone上这样做,并且可以看到执行时间之间的差异。可能编译后的正则表达式会执行不同的操作,但我还是不确定。是的@Habib,您是对的。代码的性能更好,但相信我,
[0-9]
具有更高的可读性,每个人都知道这意味着数字,但您的代码需要更高的代码阅读能力才能理解。如果输入字符串应该少于8000行(几乎等于43827字节)*10,我宁愿使用您的代码。要知道,多亏了你,我学到了两件事。
var matches = Regex.Matches(myString, "\\d");
string result = string.Empty;
for (int i = 0; i < matches.Count; i++)
    result += string.Format("Match {0}: {1}", i + 1, matches[i].ToString() + ", ");

Console.WriteLine(result.Trim().Trim(','));
foreach (var item in "Hello world, '4567' is my number.".Where(char.IsDigit))
{
    Console.WriteLine(item);
}