dounao1875 2016-04-19 11:35
浏览 164
已采纳

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

I am working with an ldap object where I am retrieving some entries from Activedirectory. The results are in such a way that the realm is returned in uppercase, like CN=bob,DC=example,DC=com instead of cn=bob,dc=example,dc=com. Is there a way to selectively convert the CN and DC substrings to lowercase? Sofar, I was using strings.split multiple times (using "," first and then iterating again using "=") to get to the point where I can get CN, DC, etc. into a list, and then using strings.ToLower on them. Is there a better and smarter way to get this done, possibly using regex so that I can possibly avoid two iterations?

  • 写回答

2条回答 默认 最新

  • 普通网友 2016-04-19 11:53
    关注

    Here is a regex way to make all uppercase chunks of text followed with a = tp lower case:

    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)
            }))
    }
    

    See the Playground demo

    The regex - [A-Z]+= - matches 1 or more uppercase ASCII letters and a = after them. Then, inside the ReplaceAllStringFunc, we can use an "anonymous function" to return a modified match value.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Excel发现不可读取的内容
  • ¥15 UE5#if WITH_EDITOR导致打包的功能不可用
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面
  • ¥15 算法题:数的划分,用记忆化DFS做WA求调
  • ¥15 chatglm-6b应用到django项目中,模型加载失败
  • ¥15 CreateBitmapFromWicBitmap内存释放问题。