variable una ultimo recortar quitar longitud extraer espacios eliminar ejemplos como caracteres caracter cadena blanco asigna agregar c# .net visual-studio-2010 string string-formatting

ultimo - C#- Insertar un número variable de espacios en una cadena?(Formateando un archivo de salida)



recortar string c# (4)

Para esto, probablemente quieras myString.PadRight(totalLength, charToInsert) .

Consulte el método String.PadRight (Int32) para obtener más información.

De acuerdo, estoy tomando datos de una lista con la que llené un DataGridView y lo exportaré a un archivo de texto. Ya he hecho la función para exportarlo a un CSV, y me gustaría hacer una versión de texto sin formato también.

Debido a que los Títulos y otros elementos son de longitud variable, cuando el archivo se guarda y luego se abre en el Bloc de notas parece un desastre porque nada se alinea.

Me gustaría que el resultado fuera así:

Sample Title One Element One Whatever Else Sample Title 2 Element 2 Whatever Else S. T. 3 E3 Whatever Else

Me imagino que puedo recorrer cada uno de los elementos para obtener la longitud de uno más largo, así puedo calcular cuántos espacios agregar a cada elemento restante.

Mi pregunta principal es: ¿hay una forma elegante de agregar una cantidad variable de caracteres en una cadena? Sería bueno tener algo como: myString.insert(index, charToInsert, howManyToInsert);

Por supuesto, obviamente puedo escribir una función para hacer esto a través de un bucle, pero quería ver si había una mejor manera de hacerlo.

¡Gracias por adelantado!

-Sootah


Solo por las patadas, aquí están las funciones que escribí para hacerlo antes de tener el bit .PadRight:

public string insertSpacesAtEnd(string input, int longest) { string output = input; string spaces = ""; int inputLength = input.Length; int numToInsert = longest - inputLength; for (int i = 0; i < numToInsert; i++) { spaces += " "; } output += spaces; return output; } public int findLongest(List<Results> theList) { int longest = 0; for (int i = 0; i < theList.Count; i++) { if (longest < theList[i].title.Length) longest = theList[i].title.Length; } return longest; } ////Usage//// for (int i = 0; i < storageList.Count; i++) { output += insertSpacesAtEnd(storageList[i].title, longest + 5) + storageList[i].rank.Trim() + " " + storageList[i].term.Trim() + " " + storageList[i].name + "/r/n"; }


Use String.Format() o TextWriter.Format() (dependiendo de cómo escriba realmente en el archivo) y especifique el ancho de un campo.

String.Format("{0,20}{1,15}{2,15}", "Sample Title One", "Element One", "Whatever Else");

También puede especificar el ancho de un campo dentro de cadenas interpoladas:

$"{"Sample Title One",20}{"Element One",15}{"Whatever Else",15}"

Y para que lo sepas, puedes crear una cadena de caracteres repetidos usando el contructor de cadena apropiado.

new String('' '', 20); // string of 20 spaces


Use String.Format :

string title1 = "Sample Title One"; string element1 = "Element One"; string format = "{0,-20} {1,-10}"; string result = string.Format(format, title1, element1); //or you can print to Console directly with //Console.WriteLine(format, title1, element1);

En el formato {0,-20} significa que el primer argumento tiene una longitud fija 20, y el signo negativo garantiza que la cadena se imprima de izquierda a derecha.