簡體   English   中英

拆分並合並兩個不同的字符串

[英]Split and combine two different strings

我正在嘗試創建一個字符串,下面是我正在嘗試實現的東西:

String first = "Previous.value1 | Previous.value2";
String second = "New.value1| New.value2";

我試圖創建這樣的最終字符串:

string final ="generate Previous.value1 cross New.value1 ? Previous.value1 cross New.value2";

但是問題是我什么時候會出現如下所示的不匹配:

String first = "Previous.value1 | Previous.value2";
String second = "New.value1";

然后我想要這樣,因為我沒有第二個變量中的 Previous.Value2的匹配值:

string final ="generate Previous.value1 cross New.value1";

到目前為止,當我在兩個字符串中具有相同的值計數時,我就可以成功生成最終字符串。

string final = "generate";
if (first.Split('|').Count() - second.Split('|').Count() == 0)
{
    int i = 0;
    foreach (var item in first.Split('|').Count())
    {
        if (i == 0)
            final = final + item + " cross " + second.Split('|')[i];
        else
            final = final +  " ? " + item + " cross " + second.Split('|')[index];
        i++;
    }
}

嘗試以下LINQ查詢(使用Zip擴展方法 ):

var zippedQry = first.Split('|').Zip(second.Split('|'),
    (f, s) => f.Trim() + " cross " + s.Trim());
string final = "generate " + String.Join(" ? ", zippedQry.ToArray());

為了保持您使用的樣式,我建議先將兩個字符串分開

String first = "Previous.value1 | Previous.value2";
String second = "New.value1 | New.value2";
string final = "generate ";

string[] first_values = first.Split('|');
string[] second_values = second.Split('|');

然后,您可以將自己定位在最短的陣列上。 如果second_values中的second_values的對應值不足,則first_values收集對應的值。 使用普通的for循環:

// run until the length of the shortest one
for (int i = 0; i < Math.Min(first_values.Length, second_values.Length); i++)
{
    // bild the normal cross-version for the first position
    string sentence = first_values[i] + " cross " + second_values[i];
    // if on first position use normal version otherwise put a ? infront of it
    final += i == 0 ? sentence : " ? " + sentence;
}

這個循環也應該像這樣處理字符串:

String first = "Previous.value1 | Previous.value2 | Previous.value3 | Previous.value4";
String second = "New.value1 | New.value2 | New.value3";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM