2016-12-01 5 views
-1

Ich muss weiße Leerzeichen mit " " auf einer Zeichenfolge (die in der Länge variabel sein kann) ersetzen. Wenn das alles wäre, was ich tun müsste, wäre es einfach, aber ich muss nur weiße Leerzeichen am Anfang eines Satzes/Absatzes ersetzen.Replace N-Nummer von string.Empty aus einer Zeichenfolge

Ich dachte, dass das Erstellen einer Unterzeichenfolge nur der Leerzeichen helfen könnte, aber das Problem, dem ich gegenüberstehe, ist, dass es kein eindeutiges Zeichen gibt, das alle Absätze/Sätze startet.

Wie kann ich Leerzeichen aus einem Absatz ersetzen, aber nur die zu Beginn?

Beispiel:

<> <> <> <> <> <> Hallo Welt von Strings und Ersatz.

Referenz: Jede <> steht für ein Leerzeichen, da der Texteditor auf dieser Site keine Leerzeichen am Anfang eines Satzes zulässt.

Ich möchte nur die <> entfernen

+3

ein Unterschied zwischen 'string.Empty gibt es die„“' und einen Raum, der 'ist "" – MethodMan

+0

https://dotnetfiddle.net/UhL3YI – 0x4f3759df

+0

@Patrick, muss es nicht trimmen aber ersetzen string.Empty mit " " –

Antwort

1

bereits.

var myString = "  Hello World . "; 

var countOfSpaces = myString.TakeWhile(c => c.Equals(' ')).Count(); 

var newString = string.Concat(Enumerable.Repeat("&#160;", countOfSpaces)) + myString.Substring(countOfSpaces); 

DotNetFiddle: https://dotnetfiddle.net/376Fmk

1

Geben Sie diesen einen Versuch:

string newString = Regex.Replace(oldString, "^\\s+|\\s+$", ""); 

EDIT: Sie können das Muster Regex ändern, je nach Bedarf:

  • ^\\s+ - Leerraum in der Anfang der Zeichenfolge.
  • \\s+$ - Leerzeichen am Ende der Zeichenfolge.
  • ^\\s+|\\s+$ - Eine Kombination, die mit einem der beiden anderen Muster übereinstimmt.

EDIT 2: um die Zeichen zu ersetzen, anstatt sie zu entfernen, können Sie wie folgt vorgehen:

Match m = Regex.Match(oldString, "^\\s+"); 
string newString = new StringBuilder(m.Value.Length) 
          .Insert(0, "&$160;", m.Value.Length) 
          .ToString() +  
         oldString.Substring(m.Value.Length); 
+0

Ich habe nicht daran gedacht, es so zu machen. Das Problem, das ich sehe, ist, dass ich jeden weißen Raum mit " " ersetzen muss. Wenn es 30 gibt, ersetze ich 30. Wenn dort 7 muss ich 7 ersetzen. –

+0

@ElPadrino Siehe Edit. – Abion47

+0

Danke, es funktioniert gut. Ich werde versuchen, diese Lösung zu verwenden, um Tabulatorräume anstelle von Leerstellen zu ersetzen; Das ist ein weiteres Feature, das ich liefern muss. –

Verwandte Themen