Muszę sparsować nazwę systemu z większego łańcucha. Nazwa systemu ma przedrostek "ABC", a następnie numer. Oto kilka przykładów:W języku C#, jaki jest najlepszy sposób, aby przeanalizować tę wartość z ciąg znaków?
ABC500
ABC1100
ABC1300
pełny ciąg, gdy trzeba analizować na nazwę systemu z może wyglądać którykolwiek z poniższych pozycji:
ABC1100 - 2ppl
ABC1300
ABC 1300
ABC-1300
Managers Associates Only (ABC1100 - 2ppl)
przed Widziałem ostatni, miałem ten kod, który działał całkiem dobrze:
string[] trimmedStrings = jobTitle.Split(new char[] { '-', '–' },StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Trim())
.ToArray();
return trimmedStrings[0];
, ale kończy się niepowodzeniem na ostatnim przykładzie, gdy przed ABC znajduje się wiązka innego tekstu.
Czy ktoś może zaproponować bardziej elegancki i przyszłościowy sposób analizowania nazwy systemu?
IMHO, Regex jest właściwą drogą. powinieneś utworzyć wyrażenie regularne, które będzie pasowało do znaków z przyrostkiem numerycznym – Saravanan
RegEx '(? <= ABC) [0-9] +' powinno Cię doprowadzić bezpośrednio do części numerycznej. – dash
Możesz chcieć sprawdzić [A sscanf() Zamiennik dla .NET] (http://www.blackbeltcoder.com/Articles/strings/a-sscanf-replacement-fornet). –