2016-06-01 9 views
-1

Ich frage mich, warum die folgende Methode true zurückgibt, da die erste Saite nicht den Text in der Contains Methodenparameter in dieser Reihenfolge enthalten:C# Enthält Methode mit Charakter Wiederholung

private bool Test() 
{ 
    if(("55.00").Contains("5.")) 
    { 
     return true; 
    } 

    return false; 
} 

Muss ich eine Notwendigkeit einstellen StringComparison enum? Oder ist das nicht verwandt?

+0

'Enthält' Methode Suche durch alle String und gibt true zurück, wenn die Zeichenfolge hat Sie an jeder Position zur Verfügung gestellt. –

+0

In welcher "Reihenfolge" meinen Sie? "55,00" enthält tatsächlich "5". darin. 'Contains()' braucht nichts anderes zu berücksichtigen als das "5." ist irgendwo in "55.00". Es könnte weniger interessieren, wo in der Schnur es enthalten ist. –

+0

Vielleicht suchen Sie nach "StartsWith"? Oder 'Equals()'? –

Antwort

2

Eigentlich enthält Ihre Zeichenfolge 5. Es wird die gesamte Zeichenfolge für die Übereinstimmung suchen, so wird es zuerst 5 überspringen und auf 5 wird es True zurückgeben. Hier ist MSDN-Artikel: String.Contains Method

+0

Okay, ich denke, ich verstehe die Methode falsch. Wie würde ich überprüfen, ob die erste Zeichenfolge diese Zeichen in dieser genauen Reihenfolge enthält – cfly24

+2

Verwenden Sie die Methode String.StartsWith. –

+0

Die String-Klasse enthält im Allgemeinen viele hilfreiche Methoden, die einen guten Blick wert sind. –

1
Maybe some helpful examples. I think you have Contains confused with StartsWith. 

Contains

StartsWith

("55.00").Contains("5.") == true 
("55.00").Contains("55.") == true 
("55.00").Contains("5.5") == false 

("55.00").StartsWith("5.") == false 
("55.00").StartsWith("55.") == true 
("55.00").StartsWith("5.5") == false