golang字符串到小写的选择性转换



我正在处理一个ldap对象,在该对象中我将从Activedirectory中检索一些条目。结果是这样的,即领域以大写形式返回,类似于CN=bob,DC=example,DC=com而不是cn=bob,dc=example,dc=com。有没有一种方法可以选择性地将CNDC子字符串转换为小写?Sofar,我多次使用strings.split(首先使用",",然后使用"="再次迭代),以达到可以将CN、DC等放入列表的程度,然后使用字符串。ToLower在他们身上。有没有更好、更聪明的方法可以做到这一点,可能使用regex,这样我就可以避免两次迭代?

这里有一种regex方法,可以使所有大写文本块后面都跟着= tp小写:

package main
import (
        "fmt"
        "strings"
        "regexp"
)
func main() {
        input := "CN=bob,DC=example,DC=com"
        r := regexp.MustCompile(`[A-Z]+=`)
        fmt.Println(r.ReplaceAllStringFunc(input, func(m string) string {
                return strings.ToLower(m)
        }))
}

查看游乐场演示

正则表达式[A-Z]+=-匹配一个或多个大写ASCII字母及其后的=。然后,在ReplaceAllStringFunc中,我们可以使用"匿名函数"来返回修改后的匹配值。

是否进行

strings.Replace(results, "CN", "cn", -1)

能帮忙吗?https://golang.org/pkg/strings/#Replace

最新更新