【问题标题】:How to extract the substring within the element of an array [duplicate]如何提取数组元素中的子字符串[重复]
【发布时间】:2019-04-10 20:19:22
【问题描述】:

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

我有一个播放器,其中一个有一个数组和一个照片和视频的互通,然后只有在照片部分你只能添加照片,在视频中你只能添加视频,然后我想做的是在第三个数组我添加照片或视频并过滤它们以查找文件的扩展名以将它们添加到相应的数组中。

插入没有特定顺序的文件:

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" };

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

【问题讨论】:

  • 您发布的代码均未编译...
  • 首先您需要使用for 循环来遍历fileList 数组。然后您需要查看string 的文档以找到获取末尾字符的函数。
  • 您的代码无法编译(但是原因很明显),并且您没有发布任何解决问题的尝试。如果您正在开发媒体播放器,那么根据扩展名对文件名进行排序非常简单。
  • 您可能想要使用 List/ArrayList,因为数组大小是动态的。我会做这样的事情:``` string[] fileList = new string[]{"pic.jpg","pic2.jpg","movie.mp4"};字符串过滤器=“.jpg”列表过滤列表=新列表(); for(int j=0;j

标签: c#


【解决方案1】:

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

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

【讨论】:

  • 请使用适当的方法处理文件名/扩展名 - 特别是Path.GetExtension(如果您需要链接,stackoverflow.com/questions/13003555/… 涵盖所有这些)
  • 如果你有文件File.jpg.mp4 :)
【解决方案2】:

类似这样的:

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();

【讨论】:

  • 由于代码本质上与suggested duplicate 相同,请考虑至少解释一下为什么您的代码更好(例如“一个元素的HashSet 远远优于包含一个元素的数组”)
  • @AlexeiLevenkov 根本没有检查重复项:)。当然,它并不优越(对于少量元素),如果您需要搜索 O(1),它始终是第一个选项...
猜你喜欢
  • 2020-11-17
  • 2021-05-22
  • 2021-10-15
  • 2021-05-10
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 2019-01-12
相关资源
最近更新 更多