我有一個文件名dayhappy_02_02345.csv
獲取文件名C#
的一部分,我如何獲得02
部分出一個變量使用,也可以我怎麼了02345
一部分,所以我可以通過這兩個值變成一個函數的變量。
使用c#。
我已經看過GetFileName
但這隻能得到文件名,擴展名或完整的文件名。
感謝
科技教育
我有一個文件名dayhappy_02_02345.csv
獲取文件名C#
的一部分,我如何獲得02
部分出一個變量使用,也可以我怎麼了02345
一部分,所以我可以通過這兩個值變成一個函數的變量。
使用c#。
我已經看過GetFileName
但這隻能得到文件名,擴展名或完整的文件名。
感謝
科技教育
對於特定的文件名,
string sData = "dayhappy_02_02345.csv";
string[] sArr = sData.split('_');
string sPart1 = sArr[1];
string sPart2 = sArr[2];
會做,但是這是一個特殊的情況下,將這種類型的文件名工作只
獲取文件名,你已經想通了,然後用String.Split()得到各個部分。
我會建議不要使用字符串方法,因爲格式的改變會強制你改變代碼,而使用正則表達式你可以使字符串成爲一個配置s不管怎樣,它更加靈活和強大。 –
@TA先生 - 夠公平的。一般來說我都同意,但在這個特定的例子中,String.Split就足夠了。這是主觀的,但我喜歡更簡潔的代碼,如果可能的話。而且,這顯然是一個非常新的開發者,所以我給出了最簡單的答案。學習正則表達式是需要完成的事情,但是對於這種情況,他現在需要嗎?跑步前我正在考慮寶寶的步驟。但是,我同意你的一般看法。 – David
文件名不斷變化,但擴展名不變,我也有文件在一個DTS變量。正則表達式是最好的前進方式嗎? – Steven
你必須使用正則表達式:
var match = new Regex(@".*_(\d+)_(\d+)").Match(Path.GetFileNameWithoutExtension(fileNAme));
var v02 = match.Groups[0].Value;
var v02345 = match.Groups[1].Value;
我認爲你的答案可能工作,但即時通訊使用Dts.Variable和文件名及其擴展名位於變量。這會工作嗎?你能簡單地替換字符串sData = Dts.Variables [「filenameVariable」]。Value。 感謝您的快速回復 – Steven
當然可以。此外,你必須在這段代碼中插入一些驗證,我沒有在上面的例子中包含 – Shai
我現在有這個: string fileName = Dts.Variables [「csvFileNames」]。Value; string [] sArray = fileName.Split('_'); string 02345Number = sArray [1]; string 02Number = sArray [2]; MessageBox.Show(02345Number); 表示無法將對象轉換爲字符串。 我真的很傻在這裏我認爲和即時通訊缺少語法,但我有這個:使用Microsoft.SqlServer.Dts.Runtime;在命名空間中,所以我不知道這會有什麼問題。感謝您的幫助 – Steven