我正在处理一个ldap对象,在该对象中我将从Activedirectory中检索一些条目。结果是这样的,即领域以大写形式返回,类似于CN=bob,DC=example,DC=com
而不是cn=bob,dc=example,dc=com
。有没有一种方法可以选择性地将CN
和DC
子字符串转换为小写?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