【问题标题】:Add one space after every two characters and add a character infront of every single character每两个字符后加一个空格,每个字符前加一个字符
【发布时间】:2013-05-15 14:56:28
【问题描述】:

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

这是我的代码:

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。

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

谢谢。

【问题讨论】:

  • 遍历输入字符串中的字符并使用 StringBuilder 构建所需的输出。
  • 我该怎么做?抱歉,我对此很陌生:/
  • 这个问题有点含糊。你的意思是:将你的字符串分成2个字符的块,用空格分隔每一对。如果(末尾)有一个奇数字符,则在其前面加上另一个(特定)字符以使其成为最终对。

标签: c# string


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

【讨论】:

  • 需要一个 TrimEnd(" ")。无论如何,很好的解决方案。
【解决方案2】:

试试这样的:

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();
}

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

【讨论】:

  • 这样他就可以进行他想要的处理
【解决方案3】:

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

String.Length % 2

如果结果为 0,则您完成了第一次迭代,如果不是,则在最后一个迭代之前添加一个字符。

【讨论】:

    【解决方案4】:

    我想这就是你要求的

    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”

    【讨论】:

    • 这是一个严肃的建议吗?
    • 嗯..它工作哈哈。编辑:谢谢大卫,我会更多地研究字符串生成器,看起来很不错!
    • 你为什么接受这个笑话答案?我的意思是我得到了这个笑话,但这不是真正的代码,它只是有点有趣。还是你真的相信所有的问题都必须用 Linq 来解决?
    猜你喜欢
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2012-05-19
    • 2013-07-15
    • 2018-07-14
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多