我有一个目录名“C:\ Folder \ 160_Name_2013111914447.7z”我需要的是从C#中的文件名中提取“160”并使用它将它传递给MS-SQL方法所以我可以移动文件到正确的文件即“160”。
请帮忙,因为我对C#不熟悉。
答案 0 :(得分:7)
尝试这样的事情:
Path.GetFileName(@"C:\Folder\160_Name_2013111914447.7z").Split('_')[0];
或者可能
string fileName = Path.GetFileName(@"C:\Folder\160_Name_2013111914447.7z");
Regex.Match(fileName, "^([0-9]+)_").Groups[1].Value;
答案 1 :(得分:3)
如果您需要使用前3个符号,则可以使用string
类的Substring
方法:
string fileName = Path.GetFileName(@"C:\Folder\160_Name_2013111914447.7z");
// take 3 symbols starting from 0th character.
string extracted = fileName.Substring(0, 3);
如果你可以有可变长度的关键字符而下划线字符是分隔符,那么我们必须稍微修改上面的代码。首先,我们需要下划线的索引:
string fileName = Path.GetFileName(@"C:\Folder\160_Name_2013111914447.7z");
// get the zero-based index of the first occurrence of an underscore:
int underscoreIndex = fileName.IndexOf("_");
string.IndexOf(...)
方法如果找不到匹配则返回-1
,因此我们需要检查它。
if (underscoreIndex >= 0)
{
string extracted = fileName.Substring(0, underscoreIndex);
}
else
{
// no underscore found
throw new InvalidOperationException(
"Cannot extract data from file name: " + fileName);
}
答案 2 :(得分:1)
要获取数字,假设您输入的文件路径始终位于开头,并且您可以使用3个字符的长度。
FileInfo fileInfo = new FileInfo(path);
string name = fileInfo .Name;
int startingNumber = Convert.ToInt32(name.Substring(0,3));
其中path是您使用
的文件的完整路径