Javascript Go:regexp以交换案例
我想在Go中使用regexp交换案例。我尝试在Javascript中使用类似的方法,但我不知道如何让Go理解$signJavascript Go:regexp以交换案例,javascript,regex,go,Javascript,Regex,Go,我想在Go中使用regexp交换案例。我尝试在Javascript中使用类似的方法,但我不知道如何让Go理解$sign func swapcase(str string) string { var validID = regexp.MustCompile(`[A-Z]`) return validID.ReplaceAllString(str, strings.ToLower(str)) /* var validID = regexp.MustCompile(`[a-z]`)
func swapcase(str string) string {
var validID = regexp.MustCompile(`[A-Z]`)
return validID.ReplaceAllString(str, strings.ToLower(str))
/*
var validID = regexp.MustCompile(`[a-z]`)
return validID.ReplaceAllString(str, strings.ToUpper(str))
*/
}
这是我的尝试。它可以将所有字母从上转换为下,反之亦然,但我想做的是同时交换每个字母。例如,“你好”-->“你好”
下面是我用Javascript编写的代码,效果非常好
function SwapCase(str) {
return str.replace(/([a-z])|([A-Z])/g,
function($0, $1, $2) {
return ($1) ? $0.toUpperCase() : $0.toLowerCase();
})
}
你不能(我认为)用regexp来实现这一点,但是用strings.Map
来实现这一点很简单
package main
import (
"fmt"
"strings"
)
func swapCase(r rune) rune {
switch {
case 'a' <= r && r <= 'z':
return r - 'a' + 'A'
case 'A' <= r && r <= 'Z':
return r - 'A' + 'a'
default:
return r
}
}
func main() {
s := "helLo WoRlD"
fmt.Println(strings.Map(swapCase, s))
}
主程序包
进口(
“fmt”
“字符串”
)
func swapCase(r符文)符文{
开关{
case'a'您不能(我认为)使用regexp来实现这一点,但是使用strings.Map可以非常简单
package main
import (
"fmt"
"strings"
)
func swapCase(r rune) rune {
switch {
case 'a' <= r && r <= 'z':
return r - 'a' + 'A'
case 'A' <= r && r <= 'Z':
return r - 'A' + 'a'
default:
return r
}
}
func main() {
s := "helLo WoRlD"
fmt.Println(strings.Map(swapCase, s))
}
主程序包
进口(
“fmt”
“字符串”
)
func swapCase(r符文)符文{
开关{
案例“a”这可能是因为这可能是因为感谢x10000。我从来没有想过映射。太棒了。谢谢Hanks x10000。我从来没有想过映射。太棒了。谢谢