diff --git a/random/random.go b/random/random.go index db74924..af2a33a 100644 --- a/random/random.go +++ b/random/random.go @@ -17,6 +17,7 @@ const ( LowwerLetters = "abcdefghijklmnopqrstuvwxyz" UpperLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + SymbolChars = "!@#$%^&*()_+-=[]{}|;':\",./<>?" ) func init() { @@ -82,6 +83,12 @@ func RandNumeralOrLetter(length int) string { return random(Numeral+Letters, length) } +// RandSymbolChar generate a random symbol char(!@#$%^&*()_+-=[]{}|;':\",./<>?). +// Play: todo +func RandSymbolChar(length int) string { + return random(SymbolChars, length) +} + // random generate a random string based on given string range. func random(s string, length int) string { b := make([]byte, length) diff --git a/random/random_example_test.go b/random/random_example_test.go index e2f6032..341585f 100644 --- a/random/random_example_test.go +++ b/random/random_example_test.go @@ -134,3 +134,20 @@ func ExampleRandUniqueIntSlice() { // Output: // ok } + +func ExampleRandSymbolChar() { + pattern := `^[\W|_]+$` + reg := regexp.MustCompile(pattern) + + s := RandSymbolChar(6) + + result1 := reg.MatchString(s) + result2 := len(s) + + fmt.Println(result1) + fmt.Println(result2) + + // Output: + // true + // 6 +} diff --git a/random/random_test.go b/random/random_test.go index f1a9bb3..fabcd3a 100644 --- a/random/random_test.go +++ b/random/random_test.go @@ -154,3 +154,16 @@ func hasDuplicate(arr []int) bool { } return false } + +func TestRandSymbolChar(t *testing.T) { + t.Parallel() + + pattern := `^[\W|_]+$` + reg := regexp.MustCompile(pattern) + + symbolChars := RandSymbolChar(10) + + assert := internal.NewAssert(t, "TestRandSymbolChar") + assert.Equal(10, len(symbolChars)) + assert.Equal(true, reg.MatchString(symbolChars)) +}