C# 提取原始文件名

C# 提取原始文件名,c#,.net,C#,.net,我有一个应用程序,其中用户可以选择附加文件。然后,文件存储在数据库中,文件名附加一些字符串,如表单名、请求号和日期。我想从这个文件中提取原始文件名 例如,文件名Test\u file.docx保存为Test\u file\uuuu ABC\uuu 123\u 01252017.docx。我已经编写了一个代码来使用该代码提取文件名,但是我觉得我的代码中有很多冗余元素。请有人告诉我,如果有一个替代或更好的方式写这篇文章。 这是我的一段代码 file = "Test_File__ABC__123_01

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

例如,文件名Test\u file.docx保存为Test\u file\uuuu ABC\uuu 123\u 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);
真实文件名包含原始文件名“测试文件”

您可以尝试以下操作:

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));     
请注意:
与此不同

这是
字符串
“\uuuu”


这是
char
'

您不能依赖附加名称的大小吗?它会变化吗?您可以使用
file.LastIndexOf(“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我不能使用“_uu”,因为我遇到一个生成错误“字符文字中的字符太多”,请将原始文件名、表单名、请求号和日期保存在单独的列中。欢迎使用C#。你应该知道,在C#中,你使用的引号类型很重要。函数
int-String.LastIndexOf(字符串值,int-startIndex)
自.Net framework 1.1以来就已存在,因此您肯定能够使用
“\uuuuuu”
。但是请注意,这些是双引号,而不是单引号。如果原始文件包含“\uuu”?@Joe:这正是我关心的问题。但是唯一不变的是,在原始文件名后面正好有3个“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我刚刚编辑了我的答案。现在,如果在3“_u;”之前出现,则为实际文件名。对吗?@Gaurav您的示例没有“正好3”下划线;在我猜的“请求号”后面有一个“uu”。您的示例或注释都是错误的。@daniell89:这不起作用。假设文件名为“Test\uuuu file\uuuuu ABC\uuuuuu 123\uuuuuu 01252017.docx”,执行后,realFileName返回TestFile。
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);