首页 > 解决方案 > C# RegEx 模式将字符串拆分为 2 个字符的子字符串

问题描述

我正在尝试找出一个正则表达式,用于将字符串拆分为 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" 

标签: c#regex

解决方案


Linq 可以简化代码。小提琴版本有效

想法:我有 a chunkSize= 2 作为您的要求,然后,Take索引处的字符串 (2,4,6,8,...) 以获取字符块并将Join它们转换为string.

public static IEnumerable<string> ProperFormat(string s)
    {
        var chunkSize = 2;
        return s.Where((x,i) => i % chunkSize == 0)
               .Select((x,i) => s.Skip(i * chunkSize).Take(chunkSize))
               .Select(x=> string.Join("", x));
    }

有了输入,我就有了输出

Idno1 --> 
Id
no
1

Id n o 2 -->
Id
 n
 o
 2

推荐阅读