用双引号包裹的C#折叠字符串数组

时间:2019-03-08 21:59:37

标签: .net linq

假设我有一个像这样的字符串数组

string[] arr = new {"a", "b", "\"b", "c\"", "c"};

我想像这样将这些数组折叠成一个数组,同时去除引号。

{"a", "b", "b c", "c"}

如何用一条LINQ生产线实现这一目标?

1 个答案:

答案 0 :(得分:1)

从您的示例中,我假设您想将数组重新组合为一个以空格为分隔符的字符串,然后再次对其进行拆分,但不要拆分带引号的子字符串。从this answer改写正则表达式,这可能是您的解决方案:

string[] arr = new [] { "a", "b", "\"b", "c\"", "c" };
var result = Regex
    .Matches(string.Join(" ", arr), @"(?<match>[^\s""]+)|""(?<match>[^""]*)""")
    .Cast<Match>()
    .Select(m => m.Groups["match"].Value)
    .ToList();