2011-12-20 27 views
1

の最も右側に数字や文字を取り除く: - どのように私はそれを達成することができますkjrjh20111103-BATCH2242_20111113-091337.txt私は、ファイル名の持つ文字列

を私はTXTまたは、091337をする必要はありません。それは多かれ少なかれ6つの数字である必要はありませんが、常に " - "と最後のものの後に "doc"または "txt"となります。

+0

正規表現 –

+0

'(\ D +)\ .. + $'このパターンは、あなたの – Joe

+0

@Ramhoundのために働く必要があります使用し、私は、彼らはそれがregex' 'としてタグ付けだとことを知っていると思います。 –

答えて

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

+0

ありがとうジョンは完全に動作します – aspmvcdeveloper

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

数字は文字列でなければなりません。そうでなければ、その例の '091337'は' 91337'に解析されます。 –

+0

良い点。それがより簡単になります。 – DanTheMan

0

正規表現は次のようになります。

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

正規表現:.*-(?<num>[0-9]*).は仕事をする必要があります。 numキャプチャグループにはあなたの文字列が含まれます。

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