Teniendo como entrada una serie de palabras en formato camelcase , donde todas las letras de la primer palabra serán minúsculas, y cada una de las siguientes palabras la primer letra será mayúscula y el resto minúsculas, determinaremos el número de palabras en la cadena proporcionada; para este ejercicio usaré la cadena holaMundo pero puedes probar el ejercicio con cualquier cadena que desee:
package main import "fmt" func camelcase(s string) int32 { var counter int32 = 0 for _, r := range s { ascii := int(r) if ascii >= 65 && ascii <= 90 { counter = counter + 1 } } return counter + 1 } func main() { result := camelcase("holaMundo") fmt.Println(result) }
En este ejercicio se imprimirá el numero 2 puesto que holaMundo se compone de dos palabras hola y Mundo, intentalo con otra cadena, si cuentas con otra manera de resolver el problema puedes compartirlo.
Aquí tenemos otra solución enviada por Guillermo Galván:
package main
import (
“fmt”
“unicode”
)
func camelCase(text string) (int, []string){
count := 0
idxStart := 0
listWords := make([]string, 0)
idxLastWord := len(text) – 1
for idx, l := range text {
if unicode.IsUpper(l){
listWords = append(listWords, text[idxStart:idx])
idxStart = idx
count = count + 1
}
if idxLastWord == idx {
listWords = append(listWords, text[idxStart:])
count = count + 1
}
}
return count, listWords
}
func main() {
test := “holaMundoCruel”
num, words := camelCase(test)
fmt.Println(test)
fmt.Println(num)
fmt.Println(words)
}