c# string textbox code-comments

Elimine el texto especificado del principio de las líneas solo si está presente(C#)



string textbox (3)

¿Qué hay de usar ''TrimStart (...)''?

string line = "-- Comment"; line = line.TrimStart(''-'', '' '');

Tengo un cuadro de texto en el que el usuario puede editar texto en un lenguaje de scripting. He descubierto cómo dejar que el usuario comente líneas con un solo clic, pero parece que no puede descifrar cómo descomentar correctamente. Por ejemplo, si el cuadro tiene:

Normal Text is here More normal text -- Commented text -- More commented text Normal Text again --Commented Text Again

Entonces, cuando el usuario selecciona cualquier cantidad de texto y decide descomentar, la "-" se elimina del comienzo de las líneas que la tienen. Las líneas sin el "-" no deberían verse afectadas. En resumen, quiero una función de descompresión similar a la de Visual Studio. ¿Hay alguna forma de lograr esto?

Gracias


El método más simple sería hacer lo siguiente para todo el bloque de texto a la vez:

string uncommentedText = yourText.Trim().Replace("-- ", "");

También puede dividir el texto completo en una matriz de líneas de texto y hacer la siguiente línea por línea para asegurarse de que no se eliminará un "-- " en algún lugar en el medio:

string uncommentedLine = yourLine.Trim().StartsWith("-- ") ? yourLine.Trim().Replace("-- ", "") : yourLine;


Use System.Text.RegularExpressions.Regex.Replace para obtener una solución simple pero robusta:

Regex.Replace(str, @"^--/s*", String.Empty, RegexOptions.Multiline)

Y aquí hay una prueba de trabajo en una sesión interactiva de C #:

Microsoft (R) Visual C# Interactive Compiler version 1.2.0.60317 Copyright (C) Microsoft Corporation. All rights reserved. Type "#help" for more information. > using System.Text.RegularExpressions; > var str = @"Normal Text is here . More normal text . -- Commented text . -- More commented text . Normal Text again . --Commented Text Again"; > str = Regex.Replace(str, @"^--/s*", string.Empty, RegexOptions.Multiline); > Console.WriteLine(str); Normal Text is here More normal text Commented text More commented text Normal Text again Commented Text Again