每两个字符后添加一个空格,并在每个字符前面添加一个字符
我想在每两个字符后添加一个空格,并在每个字符前添加一个字符。
这是我的代码:
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,则完成第一次迭代,如果不是,则只添加最后一次的字符。
- asp.net 4.0中的页面路由(无扩展名url)与PageHandlerFactory(* .aspx)
- 使用EMGU CV C#中的HOGDescriptor获取图像的HOG描述符
- 从C#创建自己的安装程序?
- 必须将带有’LinkButton’类型的控件xxx放在带有runat = server的表单标签内
- C#API返回字符串而不是XML包装字符串
- 无法将类型为“Newtonsoft.Json.Linq.JObject”的对象强制转换为“System.Runtime.Serialization.ISafeSerializationData”
- 使用C#在WMI中返回CPU使用率
- WCF ConcurrencyMode Single和InstanceContextMode PerCall
- 将数据从SQL Compact移动到SQL Server 2008