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
2
aSplit
porque 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.5
En 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
Truncate
para 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