"Declaración Jurada De Liquidación De Sueldos Para La Planilla Anual De La Empresa"
Puede ser que se vea mejor de la siguiente manera:
"Declaración Jurada de Liquidación de Sueldos para la Planilla Anual de la Empresa".
Para ello explicaré el siguiente código desarrollado en C#:
Primero que nada se tiene la enumeración CaracterNoCapital, la misma que define el conjunto de palabras que no serán convertidas a caracter capital.
public enum CaracterNoCapital
{
a = 1,
al,
con,
de,
del,
el,
ello,
en,
es,
la,
le,
las,
lo,
los,
mi,
no,
por,
para,
que,
te,
se,
si,
su,
un,
una,
y,
}
luego se tiene la clase Capital, la que expone un sólo método público estático, que requiere un texto a ser transformado y devuelve la cadena formateada. El código a continuación ha sido documentado en sus líneas para ser comprendido.
public class Capital
{
public static string ConvierteACapital(string pTexto)
{
// Se obtiene la coleccion de strings formateada
string[] partesCadena = FormatearCadena(pTexto);
//letraCapital = "";
string primeraLetra = "";
bool esCaracterNoCapital = false;
CaracterNoCapital miEnum = new CaracterNoCapital();
// Se obtienen los elementos de la enumeracion EnumCaracteresNoCapital
string[] enumArray = Enum.GetNames(miEnum.GetType());
for (int i = 0; i < escaracternocapital =" false;" a ="="" escaracternocapital =" true;" i ="="" primeraletra =" (partesCadena[i][0].ToString()).ToUpper();" aux =" 0;" letracapital =" new">= partesCadena.Length-2 )
letraCapital.Append(parte);
else
{
letraCapital.Append(parte);
letraCapital.Append(" ");
}
aux++;
}
return letraCapital.ToString();
}
private static string[] FormatearCadena(string pCadena)
{
// Se eliminan los espacios de los extremos de la cadena
pCadena = pCadena.ToLower().Trim();
// Se separa por el caracter ' '
string[] split = pCadena.Split(' ');
string textoParaSeparar = "";
foreach (string parteCadena in split)
{ // Se omiten espacios extra innecesarios
if (parteCadena != ""){
// Se añade cada parte de la cadena que no sea vacio
textoParaSeparar += parteCadena + "^";
}
}
// finalmente se separa el texto por el caracter "^"
string[] partesCadena = textoParaSeparar.Split('^');
return partesCadena;
}
}
Puntos clave
El algoritmo tiene por objetivo general aceptar una cadena, convertir a minúsculas toda la cadena, eliminar espacios en blanco, separar la cadena en palabras, identificar las palabras no capitales(definidos en la enumeración CaracterNoCapital) y finalmente formatear la cadena.