从字符串中删除日期和文件扩展名的斜杠

时间:2013-03-12 18:53:03

标签: c# regex string-parsing

我需要用字符串做两件事:
A.删除文件扩展名
B.从日期中删除“ - ”。

上传字符串的示例是:

  

ifrs_au-cor_2013-03-12.xsd

我不能只对' - '进行替换,因为字符串的第一部分包含我不想删除的' - ',只包含日期。但是,日期将始终采用YYYY-MM-DD格式,并且最后将带有扩展名。

目前我只有以下代码才能从字符串中删除扩展名:

String xsdfnameNoExtNoSlash = xsdfname;
int fileExtPos = xsdfname.LastIndexOf(".");
if (fileExtPos >= 0 )
  xsdfnameNoExtNoSlash = xsdfname.Substring(0, fileExtPos);

有没有办法一次性完成这两项操作?

2 个答案:

答案 0 :(得分:2)

var name = Path.GetFileNameWithoutExtension(name);
return Regex.Replace(name, @"(?<!\d)(\d\d\d\d)-(\d\d)-(\d\d)(?!\d)", "$2$3$4");

首先删除扩展名(如果存在),然后查找所有日期并从中删除斜杠。

正则表达式使用前瞻和后瞻来确保类似&#34; 92012-01-019&#34;不被视为约会。除数字之外的任何东西都被接受为日期边界。如有必要,您可以调整此项,例如,如果&#34; 92012-01-019&#34; 应该,事实上,应改为&#34; 9201201019&#34;然后你可以删除前瞻/后瞻(并更改替换字符串中的数字)。

我认为最简单的方法是将扩展程序作为一个单独的步骤删除,而不是一次性完成所有操作。

答案 1 :(得分:0)

string noslash = withslash.Replace('-', '');
string noextension = Path.GetFileNameWithoutExtension(xsdfname);