我想在 Go 中使用正则表达式交换案例。我尝试在 Javascript 中使用类似的方法,但我不知道如何让 Go 理解 $ 符号。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(); }) }
1 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
你不能(我认为)用正则表达式来做到这一点,但使用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))
}
- 1 回答
- 0 关注
- 163 浏览
添加回答
举报
0/150
提交
取消