我有一个不寻常的项目,其中我需要检索倒数第二次出现的字符“\”之后的文本,从而有效地为我提供了以下示例字符串中的最后两个目录:
- D:\存档目录\2015-12-31 PM\SerialNo_01
- D:\存档目录\2016-01-01\SerialNo_02
- D:\存档目录\2016 年 1 月\SerialNo_03
期望的结果分别是:
- 2015年12月31日下午\SerialNo_01
- 2016-01-01\SerialNo_02
- 2016 年 1 月\SerialNo_03
我希望尽可能干净地完成此操作,最好为每个字符串使用一行代码。
我在 Stack Overflow 上找不到有关查找 c# 中字符串或字符串中倒数第二个出现的内容(或者就此而言,向后出现的任何第 N 次出现的字符串或字符)的信息后,我回答了这个问题。如果社区发现这个问题重复或者觉得这个案例太晦涩,我愿意将其删除。
编辑:澄清我不需要将其作为字符串列表来执行;它们将一次运行一个。我将它们作为单选按钮控件动态添加到表单中。
最佳答案
您不需要正则表达式,您可以依赖 .NET
提供的内置路径处理。
var input = new List<string> {
@"D:\Archive Directory\2015-12-31 PM\SerialNo_01",
@"D:\Archive Directory\2016-01-01\SerialNo_02",
@"D:\Archive Directory\January 2016\SerialNo_03"
};
var result = input.Select(s => Path.Combine(Directory.GetParent(s).Name, Path.GetFileName(s)));
产量:
2015-12-31 PM\SerialNo_01
2016-01-01\SerialNo_02
January 2016\SerialNo_03
那么您无需担心边缘情况,甚至跨操作系统兼容性。
关于c# - 获取倒数第二次出现的字符/字符串之后的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34585526/