es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se capitaliza la primera letra de cada palabra en una cadena en Go manualmente?

Estoy tratando de escribir manualmente una función que capitaliza la primera letra de cada palabra en una cadena. Por ejemplo: “Mi perro es lindo! I+love+my+dog+4ever” a “Mi Perro Es Lindo! I+Love+My+Dog+4ever”. Agradecería si puedes ayudarme.

func Capitalize(s string) string {
    L := ToLower(s)
    runeL := []rune(L)
    len := len(runeL) - 1
    Lnew := Concat(ToUpper(string(L[0])), string(runeL[1:len]))
    LnewS := []rune(Lnew)
    newstrings := []rune{}
    for i := range LnewS {
        if IsAlpha(string(LnewS[i])) == true {
            newstrings = append(newstrings, LnewS[i])
        } else {
            newstrings = append(newstrings, LnewS[i])
            if LnewS[i+1] == rune(32) {
                newstrings = append(newstrings)
            }
            if IsLower(string(LnewS[i+1:])) {
                LnewS[i+1] = LnewS[i+1] - rune(32)
            }
        }
    }
    return string(newstrings)
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Función para Capitalizar la Primera Letra de Cada Palabra en una Cadena

    Si estás intentando escribir una función que capitalice la primera letra de cada palabra en una cadena, puedes utilizar la siguiente función:

    func Capitalize(s string) string {
        // Convertir todos los caracteres a minúsculas
        L := ToLower(s)
        runeL := []rune(L)
        len := len(runeL) - 1
    
        // Capitalizar el primer carácter de cada palabra
        Lnew := Concat(ToUpper(string(L[0])), string(runeL[1:len]))
        LnewS := []rune(Lnew)
        newstrings := []rune{}
        for i := range LnewS {
            if IsAlpha(string(LnewS[i])) == true {
                newstrings = append(newstrings, LnewS[i])
            } else {
                newstrings = append(newstrings, LnewS[i])
                if LnewS[i+1] == rune(32) {
                    newstrings = append(newstrings)
                }
                if IsLower(string(LnewS[i+1:])) {
                    LnewS[i+1] = LnewS[i+1] - rune(32)
                }
            }
        }
        return string(newstrings)
    }
    

    Esta función recibe una cadena como entrada y devuelve una nueva cadena con la primera letra de cada palabra capitalizada. La función primero convierte todos los caracteres en la cadena de entrada a minúsculas utilizando la función ToLower(). Luego, utiliza un bucle para iterar sobre cada carácter en la cadena de entrada y comprueba si es un carácter alfabético utilizando la función IsAlpha().

    Si el carácter actual es alfabético, la función lo añade a la lista newstrings. Si no es alfabético, la función lo añade a la lista newstrings y comprueba si el siguiente carácter es un carácter de espacio (rune(32)). Si lo es, la función añade el carácter de espacio a la lista newstrings. Si el siguiente carácter es alfabético y está en minúscula, la función lo capitaliza restando 32 a su punto de código Unicode utilizando el operador -.

    Finalmente, la función devuelve la lista newstrings como una cadena utilizando la función string().

Comments are closed.