的去掉数字或字母我有一个文件名:kjrjh20111103-BATCH2242_20111113-091337.txt
在最右边的一个字符串
我只需要091337
,而不是TXT或 - 我怎么能做到这一点。它不一定是6个数字,它可能是或多或少的,但总是会在“ - ”和最后一个之前。“doc”或。“txt”
的去掉数字或字母我有一个文件名:kjrjh20111103-BATCH2242_20111113-091337.txt
在最右边的一个字符串
我只需要091337
,而不是TXT或 - 我怎么能做到这一点。它不一定是6个数字,它可能是或多或少的,但总是会在“ - ”和最后一个之前。“doc”或。“txt”
您可以使用正则表达式用简单的字符串操作。对于后者:
int lastDash = text.LastIndexOf('-');
string afterDash = text.Substring(lastDash + 1);
int dot = afterDash.IndexOf('.');
string data = dot == -1 ? afterDash : afterDash.Substring(0, dot);
个人我觉得这更容易理解和确认不是一个正则表达式,但您的里程可能会有所不同。
我可能会建议解析文件名,而不必从名称字符串中分离出数字 - 解析文件名的娱乐潜力是相当可观的。 – Murph 2011-12-20 15:28:38
谢谢约翰完美 – aspmvcdeveloper 2011-12-20 15:36:06
String fileName = kjrjh20111103-BATCH2242_20111113-091337.txt;
String[] splitString = fileName.Split (new char[] { '-', '.' });
String Number = splitString[2];
号码应该是一个字符串,否则他们的例子'091337'将被解析为'91337'。 – 2011-12-20 15:27:29
好点。这使它更容易。 – DanTheMan 2011-12-20 15:29:56
正则表达式是:
string fileName = "kjrjh20111103-BATCH2242_20111113-091337.txt";
string fileMatch = Regex.Match(fileName, "(?<=-)\d+", RegexOptions.IgnoreCase).Value;
正则表达式:.*-(?<num>[0-9]*).
应该做的工作。数字捕获组包含您的字符串。
String fileName = "kjrjh20111103-BATCH2242_20111113-091337.txt";
var startIndex = fileName.LastIndexOf('-') + 1;
var length = fileName.LastIndexOf('.') - startIndex;
var output = fileName.Substring(startIndex, length);
使用正则表达式 – 2011-12-20 15:23:23
'(\ d +)\ .. + $'这种模式应该为 – Joe 2011-12-20 15:23:58
你@Ramhound工作,我想他们知道,因为它标记为'regex'。 – 2011-12-20 15:24:06