-1

我需要对字符串做两件事:
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);

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

4

2 回答 2

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

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

正则表达式使用前瞻和后瞻来确保“92012-01-019”之类的内容不被视为日期。接受除数字以外的任何内容作为日期边界。如有必要,您可以对此进行调整,例如,如果“92012-01-019”实际上应该更改为“9201201019”,那么您可以删除前瞻/后瞻(并更改替换字符串中的数字)。

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

于 2013-03-12T19:13:00.923 回答
0
string noslash = withslash.Replace('-', '');
string noextension = Path.GetFileNameWithoutExtension(xsdfname);
于 2013-03-12T18:55:55.317 回答