C# 匹配所有数字,但拆分为单个字符
这是我的字符串: 你好,世界,4567是我的号码 如果.NET中支持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");
/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);
}