Tengo una cadena numérica como esta 2223,00. Me gustaría transformarlo en 2223. Esto es: sin la información después de " , ". Suponga que sólo habrá dos decimales después de " , ".
Yo hice:
str = str.Remove(str.Length - 3, 3);
¿Existe una solución más elegante? ¿Quizás usando otra función? -No me gusta poner números explícitos-

,siempre está en la posición -3, entonces la primera solución todavía está bien, pero la optimización prematura es algo terrible en lo que perder el tiempo.Quizás esto:
str = str.Split(",").First();fuente
2aSplitporque no le importan más comas.Esto le devolverá una cadena que excluye todo después de la coma
str = str.Substring(0, str.IndexOf(','));Por supuesto, esto supone que su cadena en realidad tiene una coma con decimales. El código anterior fallará si no lo hace. Le gustaría hacer más comprobaciones:
commaPos = str.IndexOf(','); if(commaPos != -1) str = str.Substring(0, commaPos)Supongo que estás trabajando con una cadena para empezar. Idealmente, si está trabajando con un número para empezar, como un flotante o un doble, podría simplemente convertirlo en un
int, luego haga lo siguientemyInt.ToString():myInt = (int)double.Parse(myString)Esto analiza el doble usando la cultura actual (aquí en los EE. UU., Usamos
.para puntos decimales). Sin embargo, esto nuevamente supone que su cadena de entrada se puede analizar.fuente
String.Format("{0:0}", 123.4567); // "123"Si su valor inicial es un decimal en una cadena, deberá convertir
String.Format("{0:0}", double.Parse("3.5", CultureInfo.InvariantCulture)) //3.5En este ejemplo, elijo Cultura invariante, pero podría usar la que desee.
Prefiero usar la función de formato porque nunca se sabe si el decimal puede contener 2 o 3 números iniciales en el futuro.
Editar: también puede usar
Truncatepara eliminar todo después de, o.Console.WriteLine(Decimal.Truncate(Convert.ToDecimal("3,5")));fuente
Utilizar:
public static class StringExtensions { /// <summary> /// Cut End. "12".SubstringFromEnd(1) -> "1" /// </summary> public static string SubstringFromEnd(this string value, int startindex) { if (string.IsNullOrEmpty(value)) return value; return value.Substring(0, value.Length - startindex); } }Prefiero un método de extensión aquí por dos razones:
Example: f1.Substring(directorypathLength).SubstringFromEnd(1)fuente
Puede usar LastIndexOf y Substring combinados para obtener todos los caracteres a la izquierda del último índice de la coma dentro de la picadura.
cadena var = var.Substring (0, var.LastIndexOf (','));
fuente
Puede utilizar
TrimEnd. También es eficiente y se ve limpio."Name,".TrimEnd(',');fuente
"123,45".TrimEnd(',')devolverá "123,45".Remove last characters from a string if this character is...Me queda bien. Apreciado."oppa/ ".Trim().TrimEnd('/');Intente lo siguiente. Funcionó para mí:
str = str.Split(',').Last();fuente
Utilice lastIndexOf. Me gusta:
string var = var.lastIndexOf(',');fuente