gpt4 book ai didi

c# - 查找正则表达式以获取具有文件扩展名的子字符串

转载 作者:行者123 更新时间:2023-12-05 01:04:47 26 4
gpt4 key购买 nike

字符串有几种变体:

  1. "txt 文件`(*.txt)|*.txt|所有文件(*.*)|*.*`"
  2. "图像文件`|*.jpg;*.jpeg;*.png;`"
  3. “Excel 文件 `(*.xls, *.xlsx)|*.xls;*.xlsx|CSV 文件 (*.csv)|*.csv`”

子字符串可以以任意字符(空格、','、'.'、'|'、';')结尾——没关系。

尝试了以下选项:“[^*].{3,4}(.?);”、“[^*]+.(.?);”。

我需要一个正则表达式来获取string[] = {.jpg, .jpeg, ...},最好不要重复元素。

最佳答案

真的需要正则表达式吗?

首先,如果您按 | 进行拆分,结果中的每个奇数条目都是一个扩展列表。然后,您可以通过 ; 拆分该 again 以获取扩展名,然后您可以将其展平为单个序列并修剪起始 * 的每个元素>。最后,获取不同的集合并将其放入数组中。

这一切都可以通过 Split 和 Linq 来完成:

var extensions = filter.Split('|', StringSplitOptions.RemoveEmptyEntries)
.Where((x, i) => i % 2 != 0)
.SelectMany(x => x.Split(';', StringSplitOptions.RemoveEmptyEntries))
.Select(x => x.TrimStart('*'))
.Distinct()
.ToArray();

从拆分中删除空条目可确保如果您以分隔符结尾,它将被忽略。

.NET Fiddle 上查看它的实际应用.

关于c# - 查找正则表达式以获取具有文件扩展名的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71433303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com