aspmvcdeveloper
aspmvcdeveloper

Reputation: 125

strip out digits or letters at the most right of a string

I have a file name: kjrjh20111103-BATCH2242_20111113-091337.txt

I only need 091337, not the txt or the - how can I achieve that. It does not have to be 6 numbers it could be more or less but will always be after "-" and the last ones before ."doc" or ."txt"

Upvotes: 1

Views: 106

Answers (5)

StaWho
StaWho

Reputation: 2488

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

Upvotes: 0

luastoned
luastoned

Reputation: 663

The Regex would be:

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

Upvotes: 0

DanTheMan
DanTheMan

Reputation: 3277

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

Upvotes: 1

dextrey
dextrey

Reputation: 855

Regex: .*-(?<num>[0-9]*). should do the job. num capture group contains your string.

Upvotes: 0

Jon Skeet
Jon Skeet

Reputation: 1501163

You can either do this with a regex, or with simple string operations. For the latter:

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

Personally I find this easier to understand and verify than a regular expression, but your mileage may vary.

Upvotes: 4

Related Questions