为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
qq_花开花谢_0 2021-11-21 18:05:03
我试图找出一个正则表达式,用于将字符串拆分为 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" 
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

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


查看完整回答
反对 回复 2021-11-21
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

在这种情况下,Linq 确实更好。您可以使用此方法 - 它允许将字符串拆分为任意大小的块:


public static IEnumerable<string> SplitInChunks(string s, int size = 2)

{

    return s.Select((c, i) => new {c, id = i / size})

        .GroupBy(x => x.id, x => x.c)

        .Select(g => new string(g.ToArray()));

}

但是,如果您必须使用正则表达式,请使用以下代码:


public static IEnumerable<string> SplitInChunksWithRegex(string s, int size = 2)

{

    var regex = new Regex($".{{1,{size}}}");

    return regex.Matches(s).Cast<Match>().Select(m => m.Value);

}


查看完整回答
反对 回复 2021-11-21
  • 2 回答
  • 0 关注
  • 211 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信