拆分并组合两个不同的字符串

时间:2016-11-29 12:33:54

标签: c# linq

我正在尝试创建一个字符串,下面是我想要实现的东西:

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++;
    }
}

2 个答案:

答案 0 :(得分:3)

尝试此LINQ查询(使用the Zip extension method):

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

答案 1 :(得分:1)

为了保持你使用的风格,我建议首先分割两个字符串

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 first_values的相应值不足,则只收集相应的值// 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; } 。使用正常的for循环:

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

这个循环也应该像这样处理字符串:

    [HttpPost]
    public void EditProperty()
    {
        var isFeatured = HttpContext.Request.Form["isFeatured"];
        var files = HttpContext.Request.Form.Files;
        foreach (var file in files)
        {
            if (file.Length > 0)
            {
                System.Console.WriteLine(file.FileName);
                System.Console.WriteLine("This file is featured:" + isFeatured.ToString());
            }
        }
    }