Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert Camel case string to snake case

Tags:

string

go

I have a string

str := "IGotInternAtGeeksForGeeks"

I try to convert it in to

str = "i_got_intern_at_geeks_for_geeks"

like image 746
Anshu Avatar asked Oct 23 '25 01:10

Anshu


1 Answers

Try this,

import (
    "fmt"
    "strings"
    "regexp"
)

var matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)")
var matchAllCap   = regexp.MustCompile("([a-z0-9])([A-Z])")

func ToSnakeCase(str string) string {
    snake := matchFirstCap.ReplaceAllString(str, "${1}_${2}")
    snake  = matchAllCap.ReplaceAllString(snake, "${1}_${2}")
    return strings.ToLower(snake)
}

Run:

func main() {   
    fmt.Println(ToSnakeCase("IGotInternAtGeeksForGeeks"))
}

Output:

i_got_intern_at_geeks_for_geeks

NOTE: This will not work for many non-English languages.

like image 53
Tenusha Guruge Avatar answered Oct 25 '25 05:10

Tenusha Guruge