去:regexp交换案件 [英] Go : regexp to swap cases

查看:90
本文介绍了去:regexp交换案件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在Go中使用regexp交换个案。我试图在JavaScript中使用类似的方法,但我无法弄清楚如何让Go了解$符号。

  func swapcase (str string)string {
var validID = regexp.MustCompile(`[AZ]`)
return validID.ReplaceAllString(str,strings.ToLower(str))

/ *
var validID = regexp.MustCompile(`[az]`)
return validID.ReplaceAllString(str,strings.ToUpper(str))
* /
}

这是我的尝试。它适用于将所有字母从上到下转换,反之亦然,但我想要做的是同时交换每个字母。例如,Hello--->hELLO



以下是我在Javascript中的代码,它完美无缺。

 函数SwapCase(str){

return str.replace(/([az])|([AZ])/ g,
函数($ 0,$ 1,$ 2){
return($ 1)?$ 0.toUpperCase():$ 0.toLowerCase();
})
}
strings.Map

 包主


$ f


$ b $ func swapCase(r rune)rune {
switch {
case' a'< = r& amp;& r< ='z':
return r - 'a'+'A'
'A'< = r&& r <='Z':
return r - 'A'+'a'
default:
return r
}
}

$ func main(){
s:=helLo WoRlD
fmt.Println(strings.Map(swapCase,s))
}


I want to swap cases using regexp in Go. I tried to use the similar method in Javascript but I can't figure out how to make Go understand $ 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]`)
 return validID.ReplaceAllString(str, strings.ToUpper(str))
*/
}

This was my try. It works for converting all upper to lower, and vice versa, but what I want to do is to swap every letter at the same time. For example, "Hello" ---> "hELLO"

And the following is my code in Javascript that works perfect.

 function SwapCase(str) {

     return str.replace(/([a-z])|([A-Z])/g,
        function($0, $1, $2) {
            return ($1) ? $0.toUpperCase() : $0.toLowerCase();
        })
 }

解决方案

You can't (I think) do this with a regexp, but it's straightforward with 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))
}

这篇关于去:regexp交换案件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆