在C#中获取字符串的第一个单词和剩余单词的最佳方法

12

在 C# 中

var parameters =
    from line in parameterTextBox.Lines
    select new {name = line.Split(' ').First(), value = line.Split(' ').Skip(1)};
有没有不必进行两次分割就能完成此操作的方法?
4个回答

30

你可以将分裂的结果存储在let子句中。

var parameters =
    from line in parameterTextBox.Lines
    let split = line.Split(' ')
    select new {name = split.First(), value = split.Skip(1)};

6
当然可以。
var parameters = from line in parameterTextBox.Lines
                 let words = line.Split(' ')
                 select new { name = words.First(), words.skip(1) };

4
string Str= "one all of the rest";
Match m = Regex.match(Str,"(\w*) (\w.*)");
string wordone = m.Groups[1];
string wordtwo = m.Groups[2];

这将是更好的方法,因为不仅空格可以分隔单词。 - Pierre-Alain Vigeant
1
我认为LINQ是一种不同的编程方式。我经常使用LINQ,但我从未觉得它看起来很干净,尽管相当有效。多年来,我一直在使用正则表达式,几乎总是我的文本解析选择。 - rerun
1
Group[0] 是整个匹配项,而不是单词。 - rerun

0
你可以尝试这个:
private Dictionary<string, string> getParameters(string[] lines)
{
    Dictionary<string, string> results = new Dictionary<string, string>();
    foreach (string line in lines)
    {
        string pName = line.Substring(0, line.IndexOf(' '));
        string pVal = line.Substring(line.IndexOf(' ') + 1);
        results.Add(pName, pVal);
    }
    return results;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接