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