加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:52:49 所属栏目:百科 来源:网络整理
导读:我想以这样的方式连接两个字符串,在第一个字符串的第一个字符之后,第二个字符串的第一个字符到来,然后第一个字符串的第二个字符出现,然后第二个字符串的第二个字符出现,所以上.一些示例案例解释得最好: s1="Mark"; s2="Zukerberg"; //Output= MZaurkkerberg
我想以这样的方式连接两个字符串,在第一个字符串的第一个字符之后,第二个字符串的第一个字符到来,然后第一个字符串的第二个字符出现,然后第二个字符串的第二个字符出现,所以上.一些示例案例解释得最好:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读