如何用数字代替元音

use*_*104 2 go

Go中是否有任何方法可以搜索元音并将其替换为给定字符串中的数字?程序应随机用数字替换元音并显示格式化的字符串

package main

import (
"fmt"
"strings"
)

func main() {

vowels := map[rune]rune{
'a': '3',
'e': '2',
'i': '1',   
}

var s string
s = strings.Map(func(r rune) rune {
if u, ok := vowels[r]; ok {
    return u
}
return r
}, s)
fmt.Println(s)
}
Run Code Online (Sandbox Code Playgroud)

但仍然没有打印随机字符串..请建议

Tim*_*per 7

我建议使用strings.Map这个:

s = strings.Map(func(r rune) rune {
   switch r {
     case 'a':
       return '3'
     case 'e':
       return '2'
     // etc.
     default:
       return r
   }
}, s)
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/D66J5hZsNs

稍作修改,如果需要动态设置替换值,可以将元音存储在地图中.例如:

vowels := map[rune]rune{
    'a': '3',
    'e': '2',
}

s = strings.Map(func(r rune) rune {
    if u, ok := vowels[r]; ok {
        return u
    }
    return r
}, s)
Run Code Online (Sandbox Code Playgroud)