2013-11-27 25 views
0

我有一個目錄名「C:\ Folder \ 160_Name_2013111914447.7z」我需要的是從C#中的文件名中提取「160」並使用它將它傳遞給MS-SQL方法,所以我可以將文件移動到正確的文件即「160」。C#獲得第一個文件名的字符

請幫忙,因爲我對C#有點新鮮。

+0

你想獲得第一'3'字符的文件名?或從開始到第一個'_'字符?這是你的模式? –

+0

@SonerGönül文件名通常不會有3個字符。它可能是第一個4或6 –

回答

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; 
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); 

如果你可以有不同長度的關鍵字符和底角e字符是分隔符,那麼我們將不得不修改上面的代碼。首先,我們需要下劃線的指標:

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); 
} 
+1

謝謝,這將在這種情況下工作,因爲第一個字符的數量不會總是3. Thanx –

1

要得到數字,假定您輸入的文件路徑始終位於起始位置,並且您可以使用3個字符的長度。

 FileInfo fileInfo = new FileInfo(path); 

     string name = fileInfo .Name; 

     int startingNumber = Convert.ToInt32(name.Substring(0,3)); 

其中path是文件的完整路徑,您使用

相關問題