golang选择性地将字符串转换为小写

时间:2016-04-19 11:35:04

标签: regex string go iteration tolower

我正在使用ldap对象,我正在从Activedirectory中检索一些条目。结果是以大写形式返回领域,如CN=bob,DC=example,DC=com而不是cn=bob,dc=example,dc=com。有没有办法有选择地将CNDC子串转换为小写? Sofar,我多次使用strings.split(首先使用#34;"然后再使用" ="再次迭代)以达到我可以获得CN的程度, DC等进入一个列表,然后使用strings.ToLower就可以了。是否有更好,更智能的方法来完成这项工作,可能使用正则表达式,以便我可以避免两次迭代?

2 个答案:

答案 0 :(得分:4)

这是一种正则表达式,可以使所有大写文本块后跟= 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)
        }))
}

请参阅Playground demo

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

答案 1 :(得分:0)

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

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