将字符串拆分为 2 个字符的子字符串的 C# 正则表达式模式

我试图找出一个正则表达式,用于将字符串拆分为 2 个字符的子字符串。


假设我们有以下字符串:


string str = "Idno1";

string pattern = @"\w{2}";

使用上面的模式将得到“Id”和“no”,但它会跳过“1”,因为它与模式不匹配。我想要以下结果:


string str = "Idno1"; // ==> "Id" "no" "1 "

string str2 = "Id n o 2"; // ==> "Id", " n", " o", " 2" 


qq_花开花谢_0
浏览 212回答 2
2回答

幕布斯6054654

Linq 可以简化代码。小提琴版本有效想法:我有 a chunkSize= 2 作为您的要求,然后,Take索引 (2,4,6,8,...) 处的字符串将字符块和Join它们设置为string.public static IEnumerable<string> ProperFormat(string s)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; var chunkSize = 2;&nbsp; &nbsp; &nbsp; &nbsp; return s.Where((x,i) => i % chunkSize == 0)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.Select((x,i) => s.Skip(i * chunkSize).Take(chunkSize))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.Select(x=> string.Join("", x));&nbsp; &nbsp; }有了输入,我就有了输出Idno1 -->&nbsp;Idno1Id n o 2 -->Id&nbsp;n&nbsp;o&nbsp;2

梵蒂冈之花

在这种情况下,Linq 确实更好。您可以使用此方法 - 它允许将字符串拆分为任意大小的块:public static IEnumerable<string> SplitInChunks(string s, int size = 2){&nbsp; &nbsp; return s.Select((c, i) => new {c, id = i / size})&nbsp; &nbsp; &nbsp; &nbsp; .GroupBy(x => x.id, x => x.c)&nbsp; &nbsp; &nbsp; &nbsp; .Select(g => new string(g.ToArray()));}但是,如果您必须使用正则表达式,请使用以下代码:public static IEnumerable<string> SplitInChunksWithRegex(string s, int size = 2){&nbsp; &nbsp; var regex = new Regex($".{{1,{size}}}");&nbsp; &nbsp; return regex.Matches(s).Cast<Match>().Select(m => m.Value);}
打开App,查看更多内容
随时随地看视频慕课网APP