2011-05-29 13 views
5

Tengo un método que acepta una cadena y tiene que obtener una cadena con exactamente 5 caracteres.
Existe la posibilidad de que el usuario inserte cadena con más de 5 caracteres, en ese caso quiero recortar hacia la izquierda.
Existe la posibilidad de que el usuario inserte cadena con más menos de 5 caracteres, en ese caso quiero hacer un pad hacia la izquierda.recorte y almohadilla en un método de cadena

Sé que puedo hacerlo con condición if/else, pero me pregunto si la clase de cadena tiene algo útil para tratar estos casos en un solo comando.

¿Qué opinas?

Respuesta

6

Pruebe rellenando a 5 caracteres y luego recorte a 5 caracteres. ¡No importa que el relleno lo haga demasiado largo porque el recorte lo solucionará! :-)

+1

Cadena acolchadaTrimmedString = inputString.PadRight (150) .Substring (0,150); – danfolkes

-1

Suponiendo que desea almohadilla con el carácter 'A', ¿qué tal:

("AAAAA" + st).Substring(st.Length) 
// Note: padded string has length (st.Length + 5) 
// ... so substring offset is ((st.Length+5)-5) = st.Length 

(a la izquierda), o:

(st + "AAAAA").Substring(0,5) 

(a la derecha)?

-6

probar esto:

string str = "abcdefghjxd"; 
string split = str.Substring(0, 5); 
+0

No responde la mitad de la pregunta. Downvoted. – EJP

4

Está una simple orden de emisión operaciones, pista primero y luego recortar al tamaño ... como

string hi = "hello world"; //or try = "hi"; 
hi = hi.PadLeft(5, '0'); 
hi = hi.Substring(hi.Length - 5); 
Console.WriteLine(hi); 
2

Este ramas, para estar seguro, pero, francamente, creo que es lo suficientemente limpio:

var maxLength = 5; 
var paddingChar = 'x'; 

input = input.Length > maxLength ? 
    input.Remove(0, input.Length - maxLength) : 
    input.PadLeft(maxLength, paddingChar); 
0

se puede crear una extensión de PadRight (o PadLeft), tales como:

public static string PadRight2(this string value, int exactWidth) 
{ 
    return value.PadRight(exactWidth).Substring(0, exactWidth); 
}