如何循环IEnumerable <string>并创建另一个IEnumerable <string>?

Sam*_*tar -3 .net c# linq ienumerable projection

我有这个代码用于处理IEnumerable<string>文本中的字符串

foreach (var line in text)
{
    var newLine = "";
    var ln = line.TrimStart(' ');
    var colon = line.IndexOf(":");
    if (colon != -1)
    {
        if (ln.StartsWith("adj")) newLine = "j 1" + line.Substring(colon);
        else if (ln.StartsWith("adv")) newLine = "d 1" + line.Substring(colon);
        else if (ln.StartsWith("n")) newLine = "n 1" + line.Substring(colon);
        else if (ln.StartsWith("v")) newLine = "v 1" + line.Substring(colon);
    }
    else
    {
        newLine = line;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在它只是循环通过IEnumerable但我想要的是它创建另一个IEnumerable<string>字符串只是内容newLine.Trim()

任何人都可以告诉我如何做到这一点?

Ham*_*jam 5

您可以使用 Select

var result = text.Select(line =>
    {
        var newLine = "";
        var ln = line.TrimStart(' ');
        var colon = line.IndexOf(":");
        if (colon != -1)
        {
            if (ln.StartsWith("adj")) newLine = "j 1" + line.Substring(colon);
            else if (ln.StartsWith("adv")) newLine = "d 1" + line.Substring(colon);
            else if (ln.StartsWith("n")) newLine = "n 1" + line.Substring(colon);
            else if (ln.StartsWith("v")) newLine = "v 1" + line.Substring(colon);
        }
        else
        {
            newLine = line;
        }
        return newLine.Trim();
    });
Run Code Online (Sandbox Code Playgroud)