2011-12-20 63 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); 
相关问题