问题:
我的文件中添加了时间戳,如下所示:
"演讲最终项目_20141207182834657.pptx"
和
"演讲最终项目_201412071864035.pptx"
如何删除" _date"部分来自它?
请注意,我无法计算char,因为有时日期是15 char'有时甚至更多,我需要以某种方式删除以" _20"开头的字符串的一部分。直到它到达"。" (点)或者也许有人有更好的主意。
背景
我有一个文件存储空间,在我上传文件之前,我给它一个时间戳,如下所示:
(JavaScript的)
function getDate() {
var today = new Date();
var year = today.getFullYear().toString();
var month = (today.getMonth()+1).toString();
var day = today.getDate();
if (day < 10)
day = "0" + day.toString();
else
day = day.toString();
var hours = today.getHours().toString();
var minutes = today.getMinutes().toString();
var seconds = today.getSeconds().toString();
var miliSecond = today.getMilliseconds().toString();
return year+month+day+hours+minutes+seconds+miliSecond;
}
从我添加到文件名的这个函数返回的是什么。
现在我想将文件返回给用户,但没有添加到文件的日期戳..
谢谢。
更新
让我给出一个疯狂的场景,有下划线&#34; _&#34;不仅在这样的日期之前:
&#34; presentation_final_project_201412071864035.pptx&#34;
我无法信任&#34; _&#34;的索引。因为它可以无处不在。
答案 0 :(得分:3)
要提取文件部分,我将使用Path类方法更加独立于操作系统
string input = "presentation final project_20141207182834657.pptx";
string pureFile = Path.GetFileNameWithoutExtension(input);
string ext = Path.GetExtension(input);
int pos = pureFile.LastIndexOf('_');
string newFile = pureFile.Substring(0, pos) + ext;
注意,要找到下划线,你需要从输入字符串的末尾开始,而不是从一开始就避免误报(在最后一个之前存在下划线)
唯一不确定的是在日期部分之前或之后存在下划线。如果你可以确定在日期之前总是有一个下划线,并且在日期之后没有下划线,这种方法可以完美地工作。
答案 1 :(得分:2)
这是相当微不足道的。找到字符的位置并使用Substring()
构建新字符串:
string input = "presentation final project_20141207182834657.pptx";
int underscoreIndex = input.LastIndexOf("_");
int dotIndex = input.LastIndexOf(".");
string newFilename = input.Substring(0, underscoreIndex);
newFilename += input.Substring(dotIndex);
在Ideone.com上查看此操作。
答案 2 :(得分:2)
使用string.LastIndexOf
和string.Remove
获取文字:
string text = "presentation final project_20141207182834657.pptx";
int indexOfUnderscore = text.LastIndexOf('_'); // find the position of _
int indexOfPeriod = text.LastIndexOf('.', indexOfUnderscore); // find the position of .
// find remove the text between _ and .
string newText = text.Remove(indexOfUnderscore, indexOfPeriod - indexOfUnderscore);
答案 3 :(得分:0)
string r =&#34; presentation final project_2011207182834657.pptx&#34 ;;
string part1 = r.Substring(0, r.IndexOf(@"_"));
string part2 = r.Substring(r.IndexOf(@"."), 5);
Console.WriteLine(part1);
Console.WriteLine(part2);
Console.WriteLine(part1 + part2);
答案 4 :(得分:-1)
这是一个正则表达式解决方案
string file = "presentation final project_201412071864035.pptx";
var result = Regex.Replace(file, @"(.*)(_[\d]{15,})(.*)$", "$1$3");
答案 5 :(得分:-1)
string oldpath = "presentation_final_project_201412071864035.pptx";
string date = oldpath.Split('_').LastOrDefault().Split('.').FirstOrDefault();
string newpath = oldpath.Replace("_" + date, "");