假设我有一个像这样的字符串数组
string[] arr = new {"a", "b", "\"b", "c\"", "c"};
我想像这样将这些数组折叠成一个数组,同时去除引号。
{"a", "b", "b c", "c"}
如何用一条LINQ生产线实现这一目标?
答案 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();