[英]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.