我有一个应用程序,用户可以选择附加文件。然后将该文件存储在数据库中,并在文件名后附加一些字符串,例如表单名称,请求编号和日期。我想从这个文件中提取原始文件名。
例如。文件名 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 "
答案 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
:'_'