c# - 两个字符串特殊连接的更好方法

标签 c# javascript asp.net string

我想以这样的方式连接两个字符串,在第一个字符串的第一个字符之后,第二个字符串的第一个字符出现,然后是第一个字符串的第二个字符,然后是第二个字符串的第二个字符来等等。最好通过一些示例案例进行解释:

    s1="Mark";
    s2="Zukerberg";  //Output=> MZaurkkerberg

如果:

    s1="Zukerberg";
    s2="Mark"        //Output=> ZMuakrekrberg

如果:

    s1="Zukerberg";
    s2="Zukerberg";  //Output=> ZZuukkeerrbbeerrgg

我写了下面的代码,它给出了预期的输出,但它似乎有很多代码。有没有更有效的方法来做到这一点?

public void SpecialConcat(string s1, string s2)
        {
            string[] concatArray = new string[s1.Length + s2.Length];
            int k = 0;
            string final = string.Empty;
            string superFinal = string.Empty;
            for (int i = 0; i < s1.Length; i++)
            {
                for (int j = 0; j < s2.Length; j++)
                {
                    if (i == j)
                    {
                        concatArray[k] = s1[i].ToString() + s2[j].ToString();
                        final = string.Join("", concatArray);
                    }
                }
                k++;
            }
            if (s1.Length > s2.Length)
            {
                string subOne = s1.Remove(0, s2.Length);
                superFinal = final + subOne;
            }
            else if (s2.Length > s1.Length)
            {
                string subTwo = s2.Remove(0, s1.Length);
                superFinal = final + subTwo;
            }
            else
            {
                superFinal = final;
            }
            Response.Write(superFinal);
        }
    }

我也在 Javascript 中编写了相同的逻辑,它工作正常,但代码又很多。

最佳答案

var s1 = "Mark";
var s2 = "Zukerberg";
var common = string.Concat(s1.Zip(s2, (a, b) => new[]{a, b}).SelectMany(c => c));
var shortestLength = Math.Min(s1.Length, s2.Length);
var result = 
     common + s1.Substring(shortestLength) + s2.Substring(shortestLength);

关于c# - 两个字符串特殊连接的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17840175/

相关文章:

asp.net - 如何在 docker swarm 模式负载均衡器中托管 Asp.net 应用程序

C# 语法错误 - INSERT INTO 语句。 Access 数据库。

c# - Perforce API 的 .net 包装器?

javascript - 脚本数据库 : Custom ID for record for quick bulk updating?

asp.net - 一切就绪,但验证不起作用

asp.net - 将数字格式设置为右对齐,同时保持货币符号左对齐

c# - Entity Framework Multi-Tenancy 共享数据架构 : single column, 多个外键

c# - 从 C# 更新 BigQuery 数据集访问

javascript - 用于匹配 package.json 内容中的模块的正则表达式

javascript - 如何使用 JavaScript 滚动到目标 html 部分的垂直中心?