每两个字符后添加一个空格,并在每个字符前面添加一个字符

我想在每两个字符后添加一个空格,并在每个字符前添加一个字符。

这是我的代码:

string str2; str2 = str1.ToCharArray().Aggregate("", (result, c) => result += ((!string.IsNullOrEmpty(result) && (result.Length + 1) % 3 == 0) ? " " : "") + c.ToString()); 

我用一个空格分隔每两个字符没有问题,但是我如何知道分离的字符串是否具有单个字符,并在该字符前面添加一个字符?

我明白我的问题很混乱,因为我不确定如何用文字说出我想要的东西。所以我只想举个例子:

我有这个字符串:

 0123457 

用空格分隔每两个字符后,我会得到:

 01 23 45 7 

我想在7前面增加一个6。

注意:数字取决于用户的输入,因此并不总是相同。

谢谢。

我想这就是你要求的

 string str1 = "3322356"; string str2; str2 = String.Join(" ", str1.ToCharArray().Aggregate("", (result, c) => result += ((!string.IsNullOrEmpty(result) && (result.Length + 1) % 3 == 0) ? " " : "") + c.ToString()) .Split(' ').ToList().Select( x => x.Length == 1 ? String.Format("{0}{1}", Int32.Parse(x) - 1, x) : x).ToArray()); 

结果是“33 22 35 56”

 [TestMethod] public void StackOverflowQuestion() { var input = "0123457"; var temp = Regex.Replace(input, @"(.{2})", "$1 "); Assert.AreEqual("01 23 45 7", temp); } 

尝试这样的事情:

 static string ProcessString(string input) { StringBuilder buffer = new StringBuilder(input.Length*3/2); for (int i=0; i0) & (i%2==0)) buffer.Append(" "); buffer.Append(input[i]); } return buffer.ToString(); } 

当然,你需要添加一些关于额外数字的逻辑,但基本思想应该从上面清楚。

如果我理解你的要求,你可以试试,

 String.Length % 2 

如果结果为0,则完成第一次迭代,如果不是,则只添加最后一次的字符。