我需要用字符串做两件事:
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);
有没有办法一次性完成这两项操作?
答案 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);