¿como insertar ultimos 5 caracteres de una cadena?

publicado por: user84974

Hola lo que sucede es que tengo un sistema en asp.net y c# en el cual el usuario debe obligatoriamente ingresar 15 numeros en un textbox, pero solo se deben guardar los ultimos 5 de en un campo de base de datos.
Nose si haya alguna funcion de SQL para hacer eso, o pasar los ultimos digitos a una variable. Ya indague un poco pero no entiendo muy bien.

Encontre este codigo, pero me marca error

string cadena = codigo.Text;
string resultado = cadena.Substring(9, cadena.Length-4);

error: El índice y la longitud deben hacer referencia a una ubicación en la cadena. Nombre del parámetro: length’

solución

Puedes usar métodos de LINQ para obtener los n últimos caracteres de un string. Para ello, una opción muy sencilla es usar Reverse y Take. Básicamente, damos de vuelta la cadena, obtenemos 5 caracteres y volvemos a darles la vuelta:

var resultado=new string(cadena.Reverse().Take(5).Reverse().ToArray());

Esto tiene además una ventaja: si hay menos de 5 caracteres en la cadena, no lanzará ninguna excepción, simplemente devolverá los caracteres que existan.

De todas maneras, no estaría de mas comprobar si la longitud de la cadena es al menos de 5 y en caso contrario devolver por ejemplo una cadena vacía. Algo asi:

var resultado=cadena.Length>=5?new string(cadena.Reverse().Take(5).Reverse().ToArray()):"";

P.D. El problema con tu código como te han indicado es que el segundo parámetro de String.Substring es el número de caracteres que quieres coger. Como en tu caso siempre es 5, puedes ponerlo directamente: cadena.Substring(10,5). Como son siempre los últimos, puedes omitir el último parámetro: cadena.Substring(10). O, si quieres obtener los 5 últimos caracteres sea cual sea el tamaño de la cadena original: cadena.Substring(cadena.Length-5). Ten en cuenta en todos estos casos que debes asegurarte que el tamaño de la cadena original es el adecuado o recibirás un error como el que estás teniendo ahora mismo del tipo System.ArgumentOutOfRangeException

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *