2011-12-20 65 views
1

的去掉數字或字母我有一個文件名:kjrjh20111103-BATCH2242_20111113-091337.txt在最右邊的一個字符串

我只需要091337,而不是TXT或 - 我怎麼能做到這一點。它不一定是6個數字,它可能是或多或少的,但總是會在「 - 」和最後一個之前。「doc」或。「txt」

+0

使用正則表達式 – 2011-12-20 15:23:23

+0

'(\ d +)\ .. + $'這種模式應該爲 – Joe 2011-12-20 15:23:58

+0

你@Ramhound工作,我想他們知道,因爲它標記爲'regex'。 – 2011-12-20 15:24:06

回答

4

您可以使用正則表達式用簡單的字符串操作。對於後者:

int lastDash = text.LastIndexOf('-'); 
string afterDash = text.Substring(lastDash + 1); 
int dot = afterDash.IndexOf('.'); 
string data = dot == -1 ? afterDash : afterDash.Substring(0, dot); 

個人我覺得這更容易理解和確認不是一個正則表達式,但您的里程可能會有所不同。

+0

我可能會建議解析文件名,而不必從名稱字符串中分離出數字 - 解析文件名的娛樂潛力是相當可觀的。 – Murph 2011-12-20 15:28:38

+0

謝謝約翰完美 – aspmvcdeveloper 2011-12-20 15:36:06

1
String fileName = kjrjh20111103-BATCH2242_20111113-091337.txt; 
String[] splitString = fileName.Split (new char[] { '-', '.' }); 
String Number = splitString[2]; 
+2

號碼應該是一個字符串,否則他們的例子'091337'將被解析爲'91337'。 – 2011-12-20 15:27:29

+0

好點。這使它更容易。 – DanTheMan 2011-12-20 15:29:56

0

正則表達式是:

string fileName = "kjrjh20111103-BATCH2242_20111113-091337.txt"; 
string fileMatch = Regex.Match(fileName, "(?<=-)\d+", RegexOptions.IgnoreCase).Value; 
0

正則表達式:.*-(?<num>[0-9]*).應該做的工作。數字捕獲組包含您的字符串。

0
 String fileName = "kjrjh20111103-BATCH2242_20111113-091337.txt"; 
     var startIndex = fileName.LastIndexOf('-') + 1; 
     var length = fileName.LastIndexOf('.') - startIndex; 
     var output = fileName.Substring(startIndex, length); 
相關問題