我想以这样的方式连接两个字符串,在第一个字符串的第一个字符之后,第二个字符串的第一个字符到来,然后第一个字符串的第二个字符出现,然后第二个字符串的第二个字符出现,所以上.一些示例案例解释得最好:
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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。