我想在每两个字符后添加一个空格,并在每个字符前添加一个字符。
这是我的代码:
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。
注意:数字取决于用户的输入,因此并不总是相同。
感谢。
答案 0 :(得分:20)
[TestMethod]
public void StackOverflowQuestion()
{
var input = "0123457";
var temp = Regex.Replace(input, @"(.{2})", "$1 ");
Assert.AreEqual("01 23 45 7", temp);
}
答案 1 :(得分:4)
尝试这样的事情:
static string ProcessString(string input)
{
StringBuilder buffer = new StringBuilder(input.Length*3/2);
for (int i=0; i<input.Length; i++)
{
if ((i>0) & (i%2==0))
buffer.Append(" ");
buffer.Append(input[i]);
}
return buffer.ToString();
}
当然,您需要添加一些关于额外数字的逻辑,但基本思路应该从上面清楚。
答案 2 :(得分:2)
如果我理解你的要求,可以试试,
String.Length % 2
如果结果为0,则完成第一次迭代,如果没有,只需添加最后一次的字符。
答案 3 :(得分:1)
我认为这就是你要求的
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”