2013-10-09 17 views
9

Próbuję znaleźć ostatniego operatora (+, -, lub /) w ciągu znaków.Jak znaleźć ostatnie wystąpienie zestawu znaków z ciągu znaków

Próbowałem użyć metody string.indexof('operator', i);, ale w tym przypadku mogłem uzyskać tylko jeden typ operator. Czy istnieje lepsze rozwiązanie tego problemu?

Wartość string mogłaby być na przykład:

1+1/2*3-4

lub

1/2-3+4*7

Oznacza to, że ostatnim operator mógłby być każdy z nich.

+2

+1, dobre pytanie. Wiem, jak to zrobić, ale nie byłoby to eleganckie, więc dopóki nie wypracuję sposobu, w jaki można to zrobić zwięźle (używając czegoś takiego jak LINQ), poczekam na inne sugestie. EDYCJA: posortowane, istnieje metoda tego. –

Odpowiedz

10

http://msdn.microsoft.com/en-us/library/system.string.lastindexofany.aspx

Sposób LastIndexOfAny co jesteś po. Zajmie to całą tablicę znaków i znajdzie ostatnie wystąpienie dowolnego z nich.

var myString = "1/2-3+4*7"; 
var lastOperatorIndex = myString.LastIndexOfAny(new char[] { '+', '-', '/', '*' }); 

W tym scenariuszu lastOperatorIndex == 7

Jeśli chcąc zapisać sam char do zmiennej ty mógł Posiada:

var myString = "1/2-3+4*7"; 
var operatorChar = myString[myString.LastIndexOfAny(new char[] { '+', '-', '/', '*' })]; 
Powiązane problemy