2013-10-09 2 views
9

Я пытаюсь найти последнего оператора (+, -, * или /) в строке.Как найти последнее вхождение набора символов из строки

Я пытался использовать метод string.indexof('operator', i);, но в этом случае я мог получить только один тип operator. Есть ли лучшее решение для этого?

Значение string может, например, быть:

1+1/2*3-4

или

1/2-3+4*7

Это означает, что последний оператор может быть любой из них.

+2

+1, хороший вопрос. Я знаю, как это сделать, но это было бы не изящно, поэтому пока я не выработаю способ, который можно сделать кратко (используя что-то вроде LINQ), я подожду, чтобы увидеть другие предложения. EDIT: Сортировка, есть метод для этого. –

ответ

10

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

LastIndexOfAny метод, что вы после этого. Он примет массив символов и найдет последнее вхождение любого из символов.

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

В этом случае lastOperatorIndex == 7

Если Вы желаете, чтобы сохранить сам символ переменной вы могли иметь:

var myString = "1/2-3+4*7"; 
var operatorChar = myString[myString.LastIndexOfAny(new char[] { '+', '-', '/', '*' })]; 
Смежные вопросы