有没有办法可以使用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));
是否有更好更清晰的方法来实现这一目标?
答案 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