golang选择性地将字符串转换为小写
golang selective conversion of string to lower case
我正在使用 ldap 对象,我正在从 Activedirectory 中检索一些条目。结果以大写形式返回领域,例如 CN=bob,DC=example,DC=com
而不是 cn=bob,dc=example,dc=com
。有没有办法选择性地将 CN
和 DC
子字符串转换为小写?到目前为止,我多次使用 strings.split
(先使用“,”,然后再次使用“=”进行迭代)以达到可以将 CN、DC 等放入列表中的程度,然后使用 strings.ToLower 在他们身上。有没有更好更聪明的方法来完成这项工作,可能是使用正则表达式,这样我就可以避免两次迭代?
不会
strings.Replace(results, "CN", "cn", -1)
这是一种正则表达式方法,可以使所有大写文本块后跟 =
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]+=
- 匹配 1 个或多个大写 ASCII 字母及其后的 =
。然后,在 ReplaceAllStringFunc
内部,我们可以使用 "anonymous function" 到 return 修改后的匹配值。
我正在使用 ldap 对象,我正在从 Activedirectory 中检索一些条目。结果以大写形式返回领域,例如 CN=bob,DC=example,DC=com
而不是 cn=bob,dc=example,dc=com
。有没有办法选择性地将 CN
和 DC
子字符串转换为小写?到目前为止,我多次使用 strings.split
(先使用“,”,然后再次使用“=”进行迭代)以达到可以将 CN、DC 等放入列表中的程度,然后使用 strings.ToLower 在他们身上。有没有更好更聪明的方法来完成这项工作,可能是使用正则表达式,这样我就可以避免两次迭代?
不会
strings.Replace(results, "CN", "cn", -1)
这是一种正则表达式方法,可以使所有大写文本块后跟 =
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]+=
- 匹配 1 个或多个大写 ASCII 字母及其后的 =
。然后,在 ReplaceAllStringFunc
内部,我们可以使用 "anonymous function" 到 return 修改后的匹配值。