una ultimo ultima quitar primeros primer obtener los letra eliminar como caracteres caracter cadena c# stringbuilder

c# - ultimo - La mejor manera de eliminar el último carácter de una cadena creada con stringbuilder



quitar la ultima letra de un string java (11)

Debe usar el método string.Join para convertir una colección de elementos en una cadena delimitada por comas. Se asegurará de que no haya una coma al principio o al final, y se asegurará de que la cadena se construya de manera eficiente (sin cadenas intermedias innecesarias).

Esta pregunta ya tiene una respuesta aquí:

Tengo los siguientes

data.AppendFormat("{0},",dataToAppend);

El problema con esto es que lo estoy usando en un bucle y habrá una coma de prueba. ¿Cuál es la mejor manera de eliminar la coma final?

¿Tengo que cambiar los datos a una cadena de la subcadena?


La forma más sencilla y eficiente es ejecutar este comando:

data.Length--;

Al hacer esto, mueve el puntero (es decir, el último índice) hacia atrás un carácter, pero no cambia la mutabilidad del objeto. De hecho, borrar un StringBuilder se hace mejor con Length (pero en realidad usa el método Clear() para mayor claridad, porque así es como se ve su implementación):

data.Length = 0;

de nuevo, porque no cambia la tabla de asignación. Piénselo como diciendo: no quiero reconocer más estos bytes. Ahora, incluso al llamar a ToString() , no reconocerá nada más allá de su Length , bueno, no puede. Es un objeto mutable que asigna más espacio del que usted lo proporciona, simplemente está construido de esta manera.


La forma más sencilla sería usar el método Join ():

public static void Trail() { var list = new List<string> { "lala", "lulu", "lele" }; var data = string.Join(",", list); }

Si realmente necesita el StringBuilder, recorte la coma final después del bucle:

data.ToString().TrimEnd('','');


Prefiero manipular la longitud del constructor de cadenas:

data.Length = data.Length - 1;


Qué tal esto..

string str = "The quick brown fox jumps over the lazy dog,"; StringBuilder sb = new StringBuilder(str); sb.Remove(str.Length - 1, 1);


Sí, conviértalo en una cadena una vez que el bucle haya terminado:

String str = data.ToString().TrimEnd('','');


Solo usa

string.Join(",", yourCollection)

De esta manera no necesitas el StringBuilder y el bucle.


Te recomiendo, cambias tu algoritmo de bucle:

  • Agregue la coma no DESPUÉS del artículo, sino ANTES
  • Use una variable booleana, que comienza con falso, suprima la primera coma
  • Establece esta variable booleana en verdadero después de probarlo

Tienes dos opciones. El primero es muy fácil de usar. El método de remoción es bastante efectivo. La segunda forma es usar ToString con el índice de inicio y el índice de finalización ( documentación de MSDN )


Usa lo siguiente después del bucle.

.TrimEnd('','')

o simplemente cambiar a

string commaSeparatedList = input.Aggregate((a, x) => a + ", " + x)