我有一个字符串列表:
{"\\\\eZREUApp01.EU.abc.com\\eZR_Data\\ALSTOM GIS\\Review_Files",
"\\\\eZREUApp01.EU.abc.com\\eZR_Data\\ALSTOM GIS\\ADP_Processes",
"\\\\EZRSEARCH01.eu.abc.com\\road\\EZR_ALSTOM GIS_7\\",
"\\\\eZREUApp01.EU.abc.com\\eZR_Data\\ALSTOM GIS\\Production_Files\\009",
"\\\\EZRSEARCH01.EU.abc.com\\table\\EZR_Alstom_GIS_7\\",
"\\\\eZREUApp01.EU.abc.com\\eZR_Data\\ALSTOM GIS\\Production_Files"}
现在我希望c#中的输出为:
{"\\\\eZREUApp01.EU.abc.com\\eZR_Data\\ALSTOM GIS"
"\\\\EZRSEARCH01.eu.abc.com\\road\\EZR_ALSTOM GIS_7"
"\\\\EZRSEARCH01.EU.abc.com\\table\\EZR_Alstom_GIS_7 "}
任何人都可以帮助我吗?
答案 0 :(得分:2)
以下是如何做到这一点的示例。
您必须执行以下步骤:
1.拆分字符串并遍历结果数组以获得子进入的最小数量
2.遍历拆分的数组并在第一步数量的元素中查找并将它们连接起来。
我使用HashSet
,以便结果集不同。
using System;
using System.Collections.Generic;
using System.Linq;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
string[] arr ={"\\\\eZREUApp01.EU.abc.com\\eZR_Data\\ALSTOM GIS\\Review_Files",
"\\\\eZREUApp01.EU.abc.com\\eZR_Data\\ALSTOM GIS\\ADP_Processes",
"\\\\EZRSEARCH01.eu.abc.com\\road\\EZR_ALSTOM GIS_7\\",
"\\\\eZREUApp01.EU.abc.com\\eZR_Data\\ALSTOM GIS\\Production_Files\\009",
"\\\\EZRSEARCH01.EU.abc.com\\table\\EZR_Alstom_GIS_7\\",
"\\\\eZREUApp01.EU.abc.com\\eZR_Data\\ALSTOM GIS\\Production_Files"};
string[][] newArr = new string[arr.Length][];
for (int i = 0; i < newArr.GetLength(0); i++)
{
newArr[i] = arr[i].Split(new char[] { '\\' },StringSplitOptions.RemoveEmptyEntries);
}
var min = newArr.Min(x => x.Length);
HashSet<string> resultSet = new HashSet<string>();
foreach(var a in newArr)
{
resultSet.Add("\\\\" + a.Take(min).Aggregate((x,y)=>x+"\\"+y));
}
foreach(var a in resultSet)
{
Console.WriteLine(a);
}
}
}
}