Golang : Randomize letters from a string example
For this short tutorial, we will learn how to randomize the letters(including symbols and empty spaces) in a string. Such as:
"Hello World!"
to
" ! WoHllderlo"
Basically, the idea is to convert the string into a slice, randomize(shuffle) the elements inside the slice and then convert the slice back into a string.
Here you go!
package main
import (
"fmt"
"math/rand"
"strings"
"text/scanner"
"time"
)
func breakToCharSlice(str string) []string {
tokens := []rune(str)
var result []string
for _, char := range tokens {
result = append(result, scanner.TokenString(char))
}
return result
}
func shuffle(src []string) []string {
final := make([]string, len(src))
rand.Seed(time.Now().UTC().UnixNano())
perm := rand.Perm(len(src))
for i, v := range perm {
final[v] = src[i]
}
return final
}
func main() {
str := "Hello World!"
//strSlice := strings.Fields(str)
// we want to break the string into individual characters slice
// https://www.socketloop.com/tutorials/golang-break-string-into-a-slice-of-characters-example
strSlice := breakToCharSlice(str)
fmt.Println("Original :", str)
//fmt.Println("Converted to slice :", strSlice)
randomized := shuffle(strSlice)
// convert the slice back to string
randomizedStr := strings.Join(randomized, "")
// get rid the extra ""
randomizedStr = strings.Replace(randomizedStr, "\"", "", -1)
fmt.Printf("Randomized : %s\n", randomizedStr)
}
Some sample outputs:
>$ go run randomizeletters.go
>Original : Hello World!
>Randomized : Hlledr! lWoo
>$ go run randomizeletters.go
>Original : Hello World!
>Randomized : rdlollH oe!W
Reference:
https://www.socketloop.com/tutorials/golang-break-string-into-a-slice-of-characters-example
See also : Golang : Break string into a slice of characters example
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+7.7k Golang : How to execute code at certain day, hour and minute?
+5.1k Golang : Issue HTTP commands to server and port example
+5.7k Unix/Linux : How to test user agents blocked successfully ?
+19.3k Golang : Fix cannot download, $GOPATH not set error
+18.9k Golang : Read input from console line
+39.5k Golang : Remove dashes(or any character) from string
+14.9k Golang : Search folders for file recursively with wildcard support
+7.2k Golang : Not able to grep log.Println() output
+32.1k Golang : Convert []string to []byte examples
+13.2k CodeIgniter : "Fatal error: Cannot use object of type stdClass as array" message
+30.5k Golang : Remove characters from string example
+5.1k Golang : PGX CopyFrom to insert rows into Postgres database