這個問題在這里已經有了答案: 在 C# 中添加兩個不同長度的串列 14 個答案 使用 Zip() 合并不同長度的陣列而不會丟失值 3 個答案 6 小時前關閉。
我正在嘗試混合這樣的兩個字串:
string a1 = "123456";
string a2 = "DFEG";
var builder = new StringBuilder();
for (int i = 0; i < a1.Length; i )
{
builder.Append(a1[i]);
builder.Append(a2[i]);
}
Console.WriteLine(builder.ToString());
我希望輸出為“ 1D2F3E4G56 ”。
如果兩個字串的長度相同,則它有效,但如果它們的長度不同,則無效。
uj5u.com熱心網友回復:
int maxIndex = a1.Length > a2.Length ? a1.Length : a2.Length;
for (int i = 0; i < maxIndex; i )
{
if(a1.Length > i)
builder.Append(a1[i]);
if(a2.Length > i)
builder.Append(a2[i]);
}
uj5u.com熱心網友回復:
這里的陣列訪問會導致越界例外
使用Enumerable.ElementAtOrDefault嘗試訪問該索引處的陣列,或者如果所述索引超出范圍,則讓它使用該型別的默認值
由于這些是字串型別,因此默認值將是""或string.empty對于您的情況完全可以接受,因為它不會改變您要回傳的字串
builder.Append(a1.ElementAtOrDefault(i));
builder.Append(b1.ElementAtOrDefault(i));
uj5u.com熱心網友回復:
這對你有用。祝你好運
string a1 = "123456";
string a2 = "DFEGfgg";
MixStrings(a1,a2);
public void MixStrings(string a, string b)
{
var builder = new StringBuilder();
builder.Append("");
for (int i = 0; i < (a.Length > b.Length ? a.Length : b.Length); i )
{
builder.Append(a.Length>i?a[i]:"");
builder.Append(b.Length>i?b[i]:"");
}
Console.WriteLine(builder.ToString());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480461.html
標籤:C#
