【问题标题】:Go : regexp to swap casesGo : 正则表达式交换案例
【发布时间】:2013-10-04 14:06:27
【问题描述】:

我想在 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();
        })
 }

【问题讨论】:

标签: javascript regex go


【解决方案1】:

您不能(我认为)使用正则表达式来执行此操作,但使用 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))
}

【讨论】:

  • 谢谢 x10000。我从没想过映射。惊人的。谢谢
猜你喜欢
  • 2014-03-08
  • 2021-12-17
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 2017-02-05
  • 1970-01-01
相关资源
最近更新 更多