我需要将我的字符串分成2个,每个变量一个字母。

示例:string =“ ABCDEFGHIJ”
名称1:ACEGI
名称2:BDFHJ

到目前为止,我已经完成了:

        var builderM = new StringBuilder();
        var builderK = new StringBuilder();

        for (int i = 0; i < s.Length; i++)
        {
            builderM.Append(s[i]);
            builderK.Append(s[i++]);
        }

        txtM.Text = builderM.ToString();
        txtK.Text = builderK.ToString();


但是它在2中显示相同的文本。

最佳答案

您应该使用++i而不是i++

    for (int i = 0; i < s.Length; i++)
    {
        builderM.Append(s[i]);
        if(i + 1 < s.Length) // to prevent IOR exception when count is odd.
             builderK.Append(s[++i]); // pre increment.
    }


原因是i++是后递增的。这意味着在i表达式为s[i++]提供相同项之后,s[i]会递增。

08-06 22:37