2015-09-21 4 views
5

Chcę wyciąć ciąg w C# po przeczytaniu pierwszego i ostatniego alfabetu.Parsować ciąg znaków w C# po przeczytaniu pierwszego i ostatniego alfabetu

string name = "20150910000549659ABCD000007348summary.pdf";

string result = "ABCD000007348"; // Something like this 

string name = "1234 ABCD000007348 summary.pdf"; 

Po przeczytaniu 1234 "A" pochodzi iw końcu "s" pochodzi więc chcę "ABCD000007348"

+1

można dać więcej szczegółów na temat tego, co dokładnie masz na myśli przez „pierwszy i ostatni alfabetu”? Może jeszcze kilka przykładów? – juharr

+1

Dobry dla ciebie! Co zrobiłeś dotychczas, aby osiągnąć swój cel? – Will

+0

Jeśli jest to statyczny znacznik czasu, to zawsze wiesz, że nie obchodzi Cię pierwszych N cyfr. Czy zawsze będzie również kończyło się na "summary.pdf"? Jeśli tak, to możesz po prostu zrobić 'String.Replace()' na tym. – sab669

Odpowiedz

3

Wystarczy użyć wyrażenia regularnego:

string CutString(string input) 
{ 
    Match result = Regex.Match(input, @"[a-zA-Z]+[0-9]+"); 
    return result.Value; 
} 
+0

Thanku tak bardzo !!!! – user3106445

0

Ponieważ nie powiedzieć, czy to zawsze datownik na na początku zdecydowałem się na iterację ciągu, aby znaleźć pierwszy alfabetyczny znak, a nie na twardym kodowaniu s.Remove(0, n);, gdzie n jest jednak wieloma cyframi w sygnaturze czasowej.

string s = "20150910000549659ABCD000007348summary.pdf"; 
s = s.Replace("summary.pdf", String.Empty); 

int firstLetter = 0; 

foreach (char c in s) 
{ 
    if (Char.IsLetter(c)) 
    { 
     firstLetter = s.IndexOf(c); 
     break; 
    } 
} 

s = s.Remove(0, firstLetter); 
Powiązane problemy