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í:
- Eliminando un personaje de mi stringbuilder 6 respuestas
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)
Aquí hay una pregunta similar.
Me gustó el uso de un método de extensión StringBuilder.
Método quitar último