提取原始文件名

时间:2017-03-22 19:28:14

标签: c# .net

我有一个应用程序,用户可以选择附加文件。然后将该文件存储在数据库中,并在文件名后附加一些字符串,例如表单名称,请求编号和日期。我想从这个文件中提取原始文件名。

例如。文件名 Test_File.docx 保存为 Test_File__ABC__123_01252017.docx 。我编写了一个代码来使用代码提取文件名,但我觉得我的代码中有许多冗余元素。有人可以告诉我是否有替代或更好的方式来写这个。 这是我的一段代码。

file = "Test_File__ABC__123_01252017.docx";
                int ix1 = file.LastIndexOf('_');
                int ix2 = ix1 > 0 ? file.LastIndexOf('_', ix1 - 1) : -1;
                int ix3 = ix2 > 0 ? file.LastIndexOf('_', ix2 - 1) : -1;
                int ix4 = ix3 > 0 ? file.LastIndexOf('_', ix3 - 1) : -1;
                int ix5 = ix4 > 0 ? file.LastIndexOf('_', ix4 - 1) : -1;
                int ix6 = ix5 > 0 ? file.LastIndexOf('_', ix5 - 1) : -1;

string Real_Name = file.Substring(0, ix6);

Real_Name包含原始文件名" Test_File "

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

string orgFileName = "Test__File__ABC__123__01252017.docx";
string[] fileNameParts = orgFileName.Split(new string[] { "__" }, StringSplitOptions.None);
string Real_Name = String.Join("__", fileNameParts.Take(fileNameParts.Length - 3));     

答案 1 :(得分:0)

file = "Test_File__ABC__123_01252017.docx";
            int ix1 = file.LastIndexOf("__");
            int ix2 = ix1 > 0 ? file.LastIndexOf("__", ix1 - 1) : -1;

string Real_Name = file.Substring(0, ix2);

请注意:"__"与此'__'不同。

这是string"__"
这是char'_'