2016-12-07 2 views
0

Ich versuche, Code in C# zu erhalten, um den Anfang oder das Ende eines Strings zu überprüfen und zu sehen, ob es "\ r \ n" an einem dieser Orte hat und wenn ich will Diese Charaktere wurden entfernt. Ich möchte diese Zeichen nicht entfernen, wenn sie nicht am Anfang oder am Ende sind.Verwenden von Regex zum Ersetzen von Sonderzeichen

ex:

string tempStringA = "\r\n123\r\n456\r\n"; 
string tempStringB = "\r\n123\r\n456"; 
string tempStringC = "123\r\n456\r\n"; 

tempStringA, tempStringB und tempStringC würden alle geworden "123 \ r \ n456"

+0

Ich verstehe es so, dass die CRLF nur entfernt werden muss, wenn die Zeichenfolge mit CRLF beginnt und endet. Wenn nur eine Instanz entfernt werden muss, können Sie 'Regex.Replace (s, @" \ A \ r \ n (. *) \ R \ n \ z ", RegexOptions.Single)' verwenden. Ein non-regex-Weg wird immer noch bevorzugt: 'if (s.EndsWith (" \ r \ n ") && s.StartsWith (" \ r \ n ")) s = s.Substring (1, s.Length-2) ' –

+0

@KGreve Ich habe Ihre Frage noch einmal überprüft, um zu sehen, ob ich für die Antwort ausgewählt wurde. Ich sehe, dass Sie zwei weitere Zeichenfolgen als Beispiele hinzugefügt haben, die nicht da waren, als ich antwortete. Ich überprüfte beide neuen Zeichenfolgen und sie haben immer noch die \ r \ n mit meiner Antwort entfernt. Gibt es ein Problem mit der Antwort? –

Antwort

0

Dies ist nicht regex, aber regex könnte Overkill hier sein.

string.Join("\r\n", "\r\n123\r\n456\r\n".Split(new string[]{"\r\n"}, StringSplitOptions.RemoveEmptyEntries)) 
1
string str = @"\r\n123\r\n456\r\n"; 
str = Regex.Replace(str, @"^(\r\n)+|(\r\n)+$", ""); 

Das für Ihr Beispiel funktioniert und arbeitet auch für "\ r \ n \ r \ n123 \ r \ n456 \ r \ n \ r \ n", wenn es je Zeiten sind, wo es mehr als einer dieser Charaktere.

Edit: Funktioniert auch für "\ r \ n123 \ r \ n456" und "123 \ r \ n456 \ r \ n"

+0

Dies funktioniert, wenn Sie nur ein \\ nicht mit beiden verwenden str = Regex.Replace (str, @ "^ (\ r \ n) + | (\ r \ n) + $", ""); – KGreve

+0

@KGreve Oh guter Fang! Ich habe es nicht wirklich in C# ausprobiert, nur ein Online-Regex-Tester, tut mir leid. Ich habe die Antwort editiert, die sie scheinbar als "richtig" markiert entfernt. –

1
var str1 = "\r\n123\r\n456\r\n"; 
var str2 = Regex.Replace(str1, @"^\r\n|\r\n$", ""); 

Dies entfernt nur die \r\n am Anfang und Ende der string

Verwandte Themen