2016-04-29 7 views
1

I C# verwenden, und ich habe eine ZeichenfolgeWarum finde ich nicht das Wort n1 in meinem String mit String.Contain C#?

string test = "255\r\n\r\n0\r\n\r\n-1\r\n\r\n255\r\n\r\n1\r"; 

Dies ist der Code, den ich n1 verwende in meinem String zu finden.

if (test.Contains("n1")) 
{ 
    //do something 

} 
else 
{ 
    //do something else 
} 

aber es hält auf die else-Anweisung zu gehen, wenn meine Zeichenfolge n1 enthält, warum das so ist und gibt es eine alternative Art und Weise n1 in meinem String zu finden?

+3

Wenn der Buchstabe n mit \ vorangestellt ist, bedeutet dies Newline Es gibt keinen n1 in der Zeichenfolge, aber newline1 – Steve

+0

"\" wird Zeichen entkommen. Versuchen Sie 'test.Contains (@" \ n1 ")' –

Antwort

3

Ihre Zeichenfolge enthält keine "n1". \n ist ein Newline-Zeichen. Sie können, indem man ein @ vor dem String das entweichende deaktivieren:

string test = @"255\r\n\r\n0\r\n\r\n-1\r\n\r\n255\r\n\r\n1\r"; 

Dann werden alle \ sind wörtliche Schrägstriche.

1

Der andere wird ausgeführt, weil test.Contains("n1") falsch ergibt; Da \n-Environment.NewLine umgewandelt wird, so gibt es keine n1 in der Zeichenfolge vorhanden ist; Sie können so das Deaktivieren von string test = @"\n\n\n\r..." deaktivieren, es wird dann jedes \ durch \\ ersetzen, so dass Ihre Suche Ihnen das erwartete Ergebnis geben wird.

Here Sie eine Liste der Escape-Sequenzen finden enter image description here

+0

@TimSchmelter: Korrekt String-Literal für was? Wnvironment.NewLine? –

Verwandte Themen