Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何反转字符串中每个字母的大小写?_Go - Fatal编程技术网

Go 如何反转字符串中每个字母的大小写?

Go 如何反转字符串中每个字母的大小写?,go,Go,我从strings软件包中了解到ToUpper和ToLower,但显然他们在这里帮不上忙。是否有内置函数或我必须自己编写一个函数?您需要自己编写一个函数,但构建块已经在标准库中: func swapCase(s string) string { return strings.Map(func(r rune) rune { switch { case unicode.IsLower(r): return unicode.ToUpper

我从strings软件包中了解到ToUpper和ToLower,但显然他们在这里帮不上忙。是否有内置函数或我必须自己编写一个函数?

您需要自己编写一个函数,但构建块已经在标准库中:

func swapCase(s string) string {
    return strings.Map(func(r rune) rune {
        switch {
        case unicode.IsLower(r):
            return unicode.ToUpper(r)
        case unicode.IsUpper(r):
            return unicode.ToLower(r)
        }
        return r
    }, s)
}

您需要自己编写一个,但构建块已经在标准库中:

func swapCase(s string) string {
    return strings.Map(func(r rune) rune {
        switch {
        case unicode.IsLower(r):
            return unicode.ToUpper(r)
        case unicode.IsUpper(r):
            return unicode.ToLower(r)
        }
        return r
    }, s)
}

你肯定得自己写一本。这很简单,基本的想法是;获取ASCII值,如果是大写减去26,如果是小写,则添加相同的值。当然,除非您有非ASCII字符。您应该期望能够处理的:ППСіі,Сіі!那是行不通的,你一定要自己写一本。这很简单,基本的想法是;获取ASCII值,如果是大写减去26,如果是小写,则添加相同的值。当然,除非您有非ASCII字符。您应该期望能够处理的:ППСіі,Сіі!这样不行该死的@JimB,你在追我,住手!很好,优雅的解决方案。看起来真的很优雅!非常感谢。不过,我得花点时间才能清醒过来。该死的@JimB,你追上我了,住手!很好,优雅的解决方案。看起来真的很优雅!非常感谢。不过,这需要我花一些时间来思考。