如何在数组元素中提取子字符串

时间:2019-04-10 20:19:22

标签: c#

我正在创建一个照片和视频查看器,每个照片和视频查看器中都有一个要插入元素的数组,我想过滤其格式以将其存储在第三个列表中

我有一个播放器,其中有一个阵列和用于照片和视频的互通,然后仅在照片部分中您只能添加照片,而在视频中您只能添加视频,那么我想做的是在第三个数组中,我添加了照片或视频并对其进行过滤,以查找文件的扩展名以将其添加到相应的数组中。

不按特定顺序插入文件

string fileList = { "Animals.jpg", "cars.mp4", "planes.mp4", "landscape.jpg", "gameplay.mp4", "freind.mp4", "grildfriend.jpg", "travel.mp4", "school.jpg", "youtube.mp4", "asdada.jpg"};

然后将是这样:

string PhotoList[] = { "Animals.jpg", "landscape.jpg", "grildfriend.jpg", "school.jpg","asdada.jpg" };
string VideoList[] = { "cars.mp4", "planes.mp4", "gameplay.mp4" "freind.mp4", "travel.mp4", "youtube.mp4" };

到目前为止,我只能在一个数组中连接两个数组,但这保持了前两个的顺序

2 个答案:

答案 0 :(得分:0)

如果您的第一行是一个字符串数组,则下面的方法应该可以将您的数组查询为两个不同的数组。您还需要为System.Linq添加using语句。

var pictures = fileList.Where(p => p.IndexOf(".jpg") > 0);
var videos = fileList.Where(v => v.IndexOf(".mp4") > 0);

答案 1 :(得分:0)

类似这样的东西:

var photoExt = new HashSet<string>{".jpg"};
var videoExt = new HashSet<string>{".mp4"};

string[] fileList = new [] { "Animals.jpg", "cars.mp4", 
        "planes.mp4", "landscape.jpg", 
        "gameplay.mp4", "freind.mp4", 
        "grildfriend.jpg", "travel.mp4", 
        "school.jpg", "youtube.mp4", "asdada.jpg"};

string[] photos = fileList.Where(f => photoExt.Contains(Path.GetExtension(f))).ToArray();
string[] videos = fileList.Where(f => videoExt.Contains(Path.GetExtension(f))).ToArray();