【问题标题】:Get partial file name by split通过拆分获取部分文件名
【发布时间】:2020-08-20 14:01:41
【问题描述】:

我有以下文件名:

1_2_firstname_00b32acd-1234-4567-12345678900_1597932388.zip
1_2_firstname_00b32ace-1234-4568-12345678900_1597932318_id.zip
1_2_firstname_00b32acf-1234-4557-12345678900_id_1597932358_id2.zip
1_2_firstname_00b32ccg-1234-4167-12345678900_1597932331_id_id2_id3.zip

在某些情况下,我的文件包含 id 有时没有。

只获取部分文件名的最佳方法是什么

 1_2_firstname_00b32acd-1234-4567-12345678900
 1_2_firstname_00b32acf-1234-4557-12345678900
 1_2_firstname_00b32ccg-1234-4167-12345678900 

没有得到其他字符串?

【问题讨论】:

  • 如果总是相同的长度,可以使用Substring(0, 53)
  • 最后一次编辑后,您的帖子没有定论。 lastname 去哪儿了?你仍然期待它的结果
  • 对不起,因为姓氏不能是随机的..
  • " 因为姓氏不能是随机的" 然后尝试更精确地指定它。它只包含字母吗?因为所有这些事情都很重要。 lastname中的人物种类有多大?请举一些例子。
  • 请重新编辑。这里应该匹配什么:1_2_firstname_00b32acf-1234-4557-88886888883_id_1597932358_id2.zip?以及这里应该匹配什么:1_2_firstname_00b32ccg-1234-4167-88884888884_1597932331_id_id2_id3.zip您的预期结果是什么?

标签: c# string filenames


【解决方案1】:

你可以使用正则表达式:

List<string> allFileNames = new List<string>
{
    "1_2_firstname_00b32acd-1234-4567-12345678900_1597932388.zip",
    "1_2_firstname_00b32ace-1234-4568-12345678900_1597932318_id.zip",
    "1_2_firstname_00b32acf-1234-4557-12345678900_id_1597932358_id2.zip",
    "1_2_firstname_00b32ccg-1234-4167-12345678900_1597932331_id_id2_id3.zip",
};

string pattern =  @".*?\d{4}-\d{4}-\d{11}";

foreach (var element in allFileNames.Select(x => Regex.Match(fileName, pattern).Value))
{
    Console.WriteLine(element);
}

输出:

1_2_firstname_00b32ccg-1234-4167-12345678900
1_2_firstname_00b32ccg-1234-4167-12345678900
1_2_firstname_00b32ccg-1234-4167-12345678900
1_2_firstname_00b32ccg-1234-4167-12345678900

解释:

.*? 匹配任意字符(非贪心)

\d{4} 恰好匹配 4 个出现的数字

- 匹配 -

\d{11} 恰好匹配出现的 11 个数字

【讨论】:

  • 抱歉,我的问题已被编辑,因为姓氏并不总是相同,它也可能是时间戳……抱歉编辑!
  • @yaakovyaakov 好的,但您希望匹配什么?能否请您使编辑连贯一致?
  • 可能更适合他的输入与.*\d{4}-\d{4}-\d{11},因为听起来“姓氏”和“名字”不是字面意思,但如果数字长度可变,这也可能不起作用。
  • @McAden 当门响起时,我正在写这个新模式:D 一些家伙试图向我推销一份新的电话合同。烦人
猜你喜欢
  • 2012-08-07
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-15
  • 2013-03-30
  • 1970-01-01
  • 2017-04-01
相关资源
最近更新 更多