我需要在文件名数组中找到部分文件名的不同值。我希望以一行代码的方式来完成。 因此,我有一个文件名数组如下:
string[] filenames = {"aaa_ab12345.txt", "bbb_ab12345.txt", "aaa_ac12345.txt", "bbb_ac12345"}
我需要找到其ab12345部分的不同值。目前我的代码类似于:
string[] filenames_partial_distinct = Array.ConvertAll(
filenames,
file => System.IO.Path.GetFileNameWithoutExtension(file)
.Split({"_","."}, StringSplitOptions.RemoveEmptyEntries)[1]
)
.Distinct()
.ToArray();
现在,我得到的文件名是 aaa_bbb_ab12345.txt 这种格式的。因此,我需要引用文件名的倒数第二部分,而不是第二部分。 那么,如果它是 Split 方法的结果,并且基于数组长度引用任意元素,该怎么办呢?类似于这样:
Array.ConvertAll(filenames, file=>file.Split(separator)[this.Length-2]).Distinct().ToArray();
换句话说,如果一个字符串方法返回一个字符串数组,我该如何根据数组长度立即选择元素:
String.Split()[third from end, fifth from end, etc.];
[^2]
非常适用 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/ranges - juharr{"aaa_ab12345.txt", "bbb_ab12345.txt", "aaa_ac12345.txt", "bbb_ac12345", "aaa_bbb_ab12345.txt", "aaa_ccc_ab12345.txt", "aaa_bbb_ac12345.txt", "aaa_ccc_ac12345.txt"}
,我需要找到由两个字母和四个数字组成的部分的不同值。它总是在".txt"之前的最后一个。 - miguellovar q = filenames.Select(f => Path.GetFileNameWithoutExtension(f).Split('_').Last()).Distinct().ToArray();
- user10216583