使用string.format()函数或LINQ分隔字符串的最佳方法是什么?

时间:2011-11-28 12:35:51

标签: c# string linq

有没有办法可以使用ABCDEFGHIJKLMNOP函数或LINQ将“ABCD-EFGH-IJKL-MNOP”更改为“string.format()”? 我正在使用这个声明

Out= String.Format("{0}-{1}", String.Format("{0}-{1}-{2}", In.Substring(0, 4), In.Substring(4, 4), In.Substring(8, 4)), In.Substring(12, 4));  

是否有更好更清晰的方法来实现这一目标?

3 个答案:

答案 0 :(得分:10)

可以使用string.Format,但你仍然需要使用SubString来获取不同的部分。

您应该只使用Insert

string result = myString.Insert(12, "-").Insert(8, "-").Insert(4, "-");

LINQ对于这样的事情来说太过分了。

答案 1 :(得分:9)

如果没有LINQ或string.format,这很容易做到,所以我建议使用这段代码:

string s = "ABCDEFGHIJKLMNOP";
for( int i = 4; i < s.Length; i += 5){
  s = s.Insert(i, "-");
}

这将在每4个字符后插入一个破折号(我认为这就是你想要的)。

答案 2 :(得分:3)

只是为了好玩,在Linq:

string result = input.Select((c, i) => i > 0 && i % 4 == 0 ? "-" + c : c.ToString())
                .Aggregate((s1, s2) => s1 + s2);

当然,在这种情况下,我不建议使用Linq,因为“经典”解决方案会更有效,更具可读性。

不过,我很喜欢写这个:D