去除字符串最右边的数字或字母

时间:2011-12-20 15:21:36

标签: c# regex c#-4.0

我有一个文件名:kjrjh20111103-BATCH2242_20111113-091337.txt

我只需要091337,而不是txt或 - 我怎么能实现这一点。它不一定是6个数字,它可以更多或更少,但总是在“ - ”和之前的最后一个。“doc”或。“txt”

5 个答案:

答案 0 :(得分:4)

您可以使用正则表达式或简单的字符串操作来执行此操作。对于后者:

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

我个人我觉得这比正则表达更容易理解和验证,但你的里程可能会有所不同。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

正则表达式将是:

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

答案 3 :(得分:0)

正则表达式:.*-(?<num>[0-9]*).应该完成这项工作。 num capture group包含你的字符串。

答案 4 :(得分:0)

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