书写技术成长之路

Golang 字符串转换

// 转换为snake
package main

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

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

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

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

// 转换为驼峰
package main

import (
    "fmt"
    "strings"
)

func ToCamelCase(str string) string {
    temp := strings.Split(str, "-")
    for i, r := range temp {
        if i > 0 {
            temp[i] = strings.Title(r)
        }
    }

    return strings.Join(temp, "")
}

func main() {
    str := "the-stealth-warrior"
    fmt.Println(ToCamelCase(str))
}
// 转驼峰 优化版
package main

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

var re = regexp.MustCompile("(_|-)([a-zA-Z]+)")

func ToCamelCase(str string) string {
    camel := re.ReplaceAllString(str, " $2")
    camel = strings.Title(camel)
    camel = strings.Replace(camel, " ", "", -1)

    return camel
}

func main() {
    str := "the_start_boy"
    fmt.Println(ToCamelCase(str))
}