2013-10-09 16 views
9

Ich versuche, den letzten Operator (+, -, * oder /) in einer Zeichenfolge zu finden.So finden Sie das letzte Vorkommen einer Reihe von Zeichen aus einer Zeichenfolge

Ich habe versucht, die Methode string.indexof('operator', i); zu verwenden, aber in diesem Fall konnte ich nur den einzigen Typ von operator bekommen. Gibt es dafür eine bessere Lösung?

Der Wert von string könnte zum Beispiel sein:

1+1/2*3-4

oder

1/2-3+4*7

Es bedeutet, dass der letzte Betreiber einer von ihnen sein könnte.

+2

+1, gute Frage. Ich weiß, wie man das macht, aber es wäre nicht elegant, also bis ich einen Weg ausarbeite, der das präzise machen könnte (mit etwas wie LINQ), werde ich warten, um andere Vorschläge zu sehen. EDIT: Sortiert, es gibt eine Methode dafür. –

Antwort

10

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

Die LastIndexOfAny Methode ist das, was Sie nach. Es wird eine Reihe von Zeichen benötigen und das letzte Vorkommen eines beliebigen Zeichens finden.

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

In diesem Szenario lastOperatorIndex == 7

Wenn Sie wollen auf eine Variable, die die Zeichen selbst Sie speichern konnte haben:

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