Just Several methods for helping processing/handling the string in Go (go-lang)
README.md haven't contain all the examples. Please refer to the the XXXtest.go files.
- Installation
- Examples
- Methods
- Processing Methods
- AddSlashes
- StripSlashes
- NL2BR
- BR2NL
- WordWrapSimple , WordWrapAround
- NumberFmt
- PaddingBoth , PaddingLeft, PaddingRight
- LowerCaseFirstWords
- UpperCaseFirstWords
- SwapCaseFirstWords
- HumanByteSize
- HumanFileSize
- AnyCompare
- DecodeUnicodeEntities
- DecodeURLEncoded
- StripTags
- ConvertToStr
- ReverseStr
- ReverseNormalStr
- ReverseUnicode
- FileMD5Hash
- MD5Hash
- RegExpNamedGroups
- Validation Methods
- Assertion Methods
- Processing Methods
go get github.com/torden/go-strutil
, import it as "github.com/torden/go-strutil"
, use it as StringProc or StringValidator
See the Example Source for more details
quote string with slashes.
func (s *StringProc) AddSlashes(str string) string
Example:
strutil := strutils.NewStringProc()
example_str := "a\bcdefgz"
fmt.Println("%v", strutil.AddSlashes(example_str))
The above example will output:
a\\bcdefgz
Un-quotes a quoted string.
func (s *StringProc) StripSlashes(str string) string
Example:
strutil := NewStringProc()
example_str := "a\\bcdefgz"
fmt.Println("%v", strutil.StripSlashes(example_str))
The above example will output:
a\bcdefgz
breakstr inserted before looks like space (CRLF , LFCR, SPACE, NL).
func (s *StringProc) Nl2Br(str string) string
Example:
strutil := strutils.NewStringProc()
example_str := "abc\ndefgh"
fmt.Println("%v", strutil.Nl2Br(example_str))
The above example will output:
abc<br />defgh
replaces HTML line breaks to a newline
func (s *StringProc) Br2Nl(str string) string
Example:
strutil := strutils.NewStringProc()
example_str1 := "abc<br>defgh"
fmt.Println("%v", strutil.Br2Nl(example_str1))
example_str2 := "abc<br />defgh"
fmt.Println("%v", strutil.Br2Nl(example_str2))
example_str3 := "abc<br/>defgh"
fmt.Println("%v", strutil.Br2Nl(example_str3))
The above example will output:
abc\ndefgh
abc\ndefgh
abc\ndefgh
Wraps a string to a given number of characters using break characters (TAB, SPACE)
func (s *StringProc) WordWrapSimple(str string, wd int, breakstr string) string
func (s *StringProc) WordWrapAround(str string, wd int, breakstr string) string
Example:
strutil := strutils.NewStringProc()
example_str := "The quick brown fox jumped over the lazy dog."
fmt.Printf("%v\n", strutil.WordWrapSimple(example_str, 3, "*"))
fmt.Printf("%v\n", strutil.WordWrapSimple(example_str, 8, "*"))
fmt.Printf("%v\n", strutil.WordWrapAround(example_str, 3, "*"))
fmt.Printf("%v\n", strutil.WordWrapAround(example_str, 8, "*"))
The above example will output:
The*quick*brown*fox*jumped*over*the*lazy*dog.
The quick*brown fox*jumped over*the lazy*dog.
The*quick*brown*fox*jumped*over*the*lazy*dog.
The quick*brown fox*jumped*over the*lazy*dog.
format a number with english notation grouped thousands
func (s *StringProc) NumberFmt(obj interface{}) (string, error)
Example:
strutil := strutils.NewStringProc()
dataset := map[interface{}]string{
123456789101112: "123,456,789,101,112",
123456.1234: "123,456.1234",
-123456.1234: "-123,456.1234",
1.1234561e+06: "1.1234561e+06",
1234.1234: "1,234.1234",
12345.1234: "12,345.1234",
-1.1234561e+06: "-1.1234561e+06",
-12345.16: "-12,345.16",
12345.16: "12,345.16",
1234: "1,234",
12.12123098123: "12.12123098123",
1.212e+24: "1.212e+24",
123456789: "123,456,789",
}
for k, v := range dataset {
retval, err := strutil.NumberFmt(k)
if v != retval {
fmt.Errorf("Return Value mismatch.\nExpected: %v\nActual: %v", retval, v)
} else if err != nil {
fmt.Errorf("Return Error : %v", err)
} else {
fmt.Printf("%v\n", retval)
}
}
The above example will output:
123,456,789,101,112
123,456.1234
-123,456.1234
1.1234561e+06
1,234.1234
12,345.1234
-1.1234561e+06
-12,345.16
12,345.16
1,234
12.12123098123
1.212e+24
123,456,789
pad a string to a certain length with another string
func (s *StringProc) PaddingBoth(str string, fill string, mx int) string
func (s *StringProc) PaddingLeft(str string, fill string, mx int) string
func (s *StringProc) PaddingRight(str string, fill string, mx int) string
Example:
strutil := strutils.NewStringProc()
example_str := "Life isn't always what one like."
fmt.Printf("%v\n", strutil.PaddingBoth(example_str, "*", 38))
fmt.Printf("%v\n", strutil.PaddingLeft(example_str, "*", 38))
fmt.Printf("%v\n", strutil.PaddingRight(example_str, "*", 38))
fmt.Printf("%v\n", strutil.PaddingBoth(example_str, "*-=", 37))
fmt.Printf("%v\n", strutil.PaddingLeft(example_str, "*-=", 37))
fmt.Printf("%v\n", strutil.PaddingRight(example_str, "*-=", 37))
The above example will output:
***Life isn't always what one like.***
******Life isn't always what one like.
Life isn't always what one like.******
*-Life isn't always what one like.*-=
*-=*-Life isn't always what one like.
Life isn't always what one like.*-=*-
Lowercase the first character of each word in a string
// TOKEN : \t \r \n \f \v \s
func (s *StringProc) LowerCaseFirstWords(str string) string
Example:
strutil := strutils.NewStringProc()
example_str := "LIFE ISN'T ALWAYS WHAT ONE LIKE."
fmt.Printf("%v\n", strutil.LowerCaseFirstWords(example_str))
The above example will output:
lIFE iSN'T aLWAYS wHAT oNE lIKE.
Uppercase the first character of each word in a string
// TOKEN : \t \r \n \f \v \s
func (s *StringProc) UpperCaseFirstWords(str string) string
Example:
strutil := strutils.NewStringProc()
example_str := "life isn't always what one like."
fmt.Printf("%v\n", strutil.UpperCaseFirstWords(example_str))
The above example will output:
Life Isn't Always What One Like.
Switch the first character case of each word in a string
// TOKEN : \t \r \n \f \v \s
func (s *StringProc) SwapCaseFirstWords(str string) string
Example:
strutil := strutils.NewStringProc()
example_str := "O SAY, CAN YOU SEE, BY THE DAWN’S EARLY LIGHT,"
fmt.Printf("%v\n", strutil.UpperCaseFirstWords(example_str))
The above example will output:
o sAY, cAN yOU sEE, bY tHE dAWN’S eARLY lIGHT,
Byte Size convert to Easy Readable Size String
func (s *StringProc) HumanByteSize(obj interface{}, decimals int, unit uint8) (string, error)
Example:
strutil := strutils.NewStringProc()
example_str := 3276537856
fmt.Printf("%v\n", strutil.HumanByteSize(k, 2, CamelCaseDouble)
The above example will output:
3.05Gb
File Size convert to Easy Readable Size String
func (s *StringProc) HumanFileSize(filepath string, decimals int, unit uint8) (string, error)
Example:
strutil := strutils.NewStringProc()
example_str := 3276537856
fmt.Printf("%v\n", strutil.HumanFileSize("/tmp/java.tomcat.core", 2, CamelCaseDouble)
The above example will output:
3.05Gb
AnyCompare is compares two same basic type (without prt) dataset (slice,map,single data).
func (s *StringProc) AnyCompare(obj1 interface{}, obj2 interface{}) (bool, error)
Example:
strutil := strutils.NewStringProc()
testComplexMap1 := map[string]map[string]map[string]int{
"F": map[string]map[string]int{
"name": map[string]int{
"first": 1,
"last": 2,
},
},
"A": map[string]map[string]int{
"name": map[string]int{
"first": 11,
"last": 21,
},
},
}
testComplexMap2 := map[string]map[string]map[string]int{
"F": map[string]map[string]int{
"name": map[string]int{
"first": 11,
"last": 12222,
},
},
"A": map[string]map[string]int{
"name": map[string]int{
"first": 11,
"last": 21,
},
},
}
retval, err = strproc.AnyCompare(testComplexMap1, testComplexMap2)
fmt.Println("Return : ", retval)
fmt.Println("Error : ", err)
The above example will output:
Return : false
Error : different value : (obj1[A][name][first][last][F][name][first] := 1) != (obj2[A][name][first][last][F][name][first] := 11)
DecodeUnicodeEntities Decodes Unicode Entities
func (s *StringProc) DecodeUnicodeEntities(val string) (string, error)
Example:
StrUnicodeEntityEncodedMultipleLine := "%uC548%uB155%uD558%uC138%uC694.%0A%uBC29%uAC11%uC2B5%uB2C8%uB2E4.%0A%uAC10%uC0AC%uD569%uB2C8%uB2E4.%0A%u304A%u306F%u3088%u3046%u3054%u3056%u3044%u307E%u3059%0A%u3053%u3093%u306B%u3061%u306F%uFF0E%0A%u3053%u3093%u3070%u3093%u306F%uFF0E%0A%u304A%u3084%u3059%u307F%u306A%u3055%u3044%uFF0E%0A%u3042%u308A%u304C%u3068%u3046%u3054%u3056%u3044%u307E%u3059%0A%u4F60%u597D%0A%u518D%u898B%0A%u8C22%u8C22%21%u0E2A%u0E27%u0E31%u0E2A%u0E14%u0E35%u0E04%u0E23%u0E31%u0E1A%0A%u0E41%u0E25%u0E49%u0E27%u0E40%u0E08%u0E2D%u0E01%u0E31%u0E19%u0E04%u0E23%u0E31%u0E1A%0A%u0E02%u0E2D%u0E1A%u0E04%u0E38%u0E13%u0E04%u0E23%u0E31%u0E1A%0A%u0421%u0430%u0439%u043D%20%u0431%u0430%u0439%u043D%u0430%u0443%u0443"
retval, err := strproc.DecodeUnicodeEntities(StrUnicodeEntityEncodedMultipleLine)
fmt.Println("Return : ", retval)
fmt.Println("Error : ", err)
The above example will output:
Return : 안녕하세요.
방갑습니다.
감사합니다.
おはようございます
こんにちは.
こんばんは.
おやすみなさい.
ありがとうございます
你好
再見
谢谢!สวัสดีครับ
แล้วเจอกันครับ
ขอบคุณครับ
Сайн байнауу
Error : <nil>
DecodeURLEncoded Decodes URL-encoded string (including unicode entities)
func (s *StringProc) DecodeURLEncoded(val string) (string, error)
Example:
URLWithJapanWorld := "http://hello.%E4%B8%96%E7%95%8C.com/foo"
retval, err := strproc.DecodeURLEncoded(URLWithJapanWorld)
fmt.Println("Return : ", retval)
fmt.Println("Error : ", err)
The abose example will output:
Result : http://hello.世界.com/foo
Err : <nil>
StipTags is remove all tag in string (Pure String or URL Encoded or Html (Unicode) Entities Encoded or Mixed String)
func (s *StringProc) StripTags(str string) (string, error)
Example:
strproc := strproc.NewStringProc()
example_str := `
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title> Just! a String Processing Library for Go-lang</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#157878">
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="/go-strutil/assets/css/style.css?v=dae229423409070462d2ce364eba3b5721930df0">
</head>
<body>
<section class="page-header">
<h1 class="project-name">Just! a String Processing Library for Go-lang</h1>
<h2 class="project-tagline">Just a few methods for helping processing and validation the string</h2>
<a href="https://github.com/torden/go-strutil" class="btn">View on GitHub</a>
</section>
<section class="main-content">
<h1 id="just-a-string-processing-library-for-go-lang">Just! a String Processing Library for Go-lang</h1>
<p>Just a few methods for helping processing the string</p>
<p>README.md haven’t contain all the examples. Please refer to the the XXXtest.go files.</p>
</body>
</html>
`
retval, err := strutil.StripTags(example_str)
if err != nil {
fmt.Println("Error : ", err)
}
fmt.Println(retval)
The above example will output:
Just! a String Processing Library for Go-lang
Just! a String Processing Library for Go-lang
Just a few methods for helping processing and validation the string
View on GitHub
Just! a String Processing Library for Go-lang
Just a few methods for helping processing the string
README.md haven’t contain all the examples. Please refer to the the XXXtest.go files.
ConvertToStr is Convert basic data type to string
func (s *StringProc) ConvertToStr(obj interface{}) (string, error)
Example:
strproc := strproc.NewStringProc()
example_val := uint64(1234567)
retval, err := strutil.ConvertToStr(example_val)
if err != nil {
fmt.Println("Error : ", err)
}
fmt.Println(retval)
The above example will output:
"1234567"
ReverseStr is Reverse a String , According to value type between ascii (ReverseNormalStr) or rune (ReverseUnicode)
func (s *StringProc) ReverseStr(str string) string
Example:
strproc := strproc.NewStringProc()
dataset := []string{
"0123456789",
"가나다라마바사",
"あいうえお",
"天地玄黃宇宙洪荒",
}
strproc := strproc.NewStringProc()
for k, v := range dataset {
fmt.Println(strproc.ReverseStr(k))
}
The above example will output:
9876543210
사바마라다나가
おえういあ
荒洪宙宇黃玄地天
ReverseNormalStr is Reverse a None-unicode String. Fast then ReverseUnicode or ReverseStr
func (s *StringProc) ReverseNormalStr(str string) string
Example:
strproc := strproc.NewStringProc()
dataset := []string{
"0123456789",
"abcdefg",
}
strproc := strproc.NewStringProc()
for k, v := range dataset {
fmt.Println(strproc.ReverseNormalStr(k))
}
The above example will output:
9876543210
gfedcba
ReverseNormalStr is Reverse a None-unicode String
func (s *StringProc) ReverseUnicode(str string) string
Example:
strproc := strproc.NewStringProc()
dataset := []string{
"0123456789",
"가나다라마바사",
"あいうえお",
"天地玄黃宇宙洪荒",
}
strproc := strproc.NewStringProc()
for k, v := range dataset {
fmt.Println(strproc.ReverseUnicode(k))
}
The above example will output:
9876543210
사바마라다나가
おえういあ
荒洪宙宇黃玄地天
FileMD5Hash is MD5 checksum of the file
func (s *StringProc) FileMD5Hash(filepath string) (string, error)
Example:
strproc := strutils.NewStringProc()
retval, err := strproc.FileMD5Hash("./LICENSE")
if err != nil {
fmt.Println("Error : %v", err)
}
fmt.Println(retval)
The above example will output:
f3f8954bac465686f0bfc2a757c5200b
MD5Hash is MD5 checksum of the string
func (s *StringProc) MD5Hash(str string) (string, error)
Example:
dataset := []string{
"0123456789",
"abcdefg",
"abcdefgqwdoisef;oijawe;fijq2039jdfs.dnc;oa283hr08uj3o;ijwaef;owhjefo;uhwefwef",
}
strproc := strutils.NewStringProc()
//check : common
for _, v := range dataset {
retval, err := strproc.MD5Hash(v)
if err != nil {
fmt.Println("Error : %v", err)
} else {
fmt.Println(retval)
}
}
The above example will output:
781e5e245d69b566979b86e28d23f2c7
7ac66c0f148de9519b8bd264312c4d64
15f764f21d09b11102eb015fc8824d00
RegExpNamedGroups is Captures the text matched by regex into the group name
func (s *StringProc) RegExpNamedGroups(regex *regexp.Regexp, val string) (map[string]string, error)
Example:
strproc := strutils.NewStringProc()
regexGoVersion := regexp.MustCompile(`go(?P<major>([0-9]{1,3}))\.(?P<minor>([0-9]{1,3}))(\.(?P<rev>([0-9]{1,3})))?`)
retval, err := getGroupMatched(regexGoVersion, runtime.Version())
if err != nil {
return 0, err
}
fmt.Println(retval)
The above example will output:
map[major:1 minor:11 rev:5]
IsValidEmail is Validates whether the value is a valid e-mail address.
func (s *StringValidator) IsValidEmail(str string) bool
Example:
strvalidator := strutils.NewStringValidator()
example_str := "[email protected]"
fmt.Printf("%v\n", strvalidator.IsValidEmail(example_str))
The above example will output:
true
IsValidDomain is Validates whether the value is a valid domain address
func (s *StringValidator) IsValidDomain(str string) bool
Example:
strvalidator := strutils.NewStringValidator()
example_str := "golang.org"
fmt.Printf("%v\n", strvalidator.IsValidDomain(example_str))
The above example will output:
true
IsValidURL is Validates whether the value is a valid url
func (s *StringValidator) IsValidURL(str string) bool
Example:
strvalidator := strutils.NewStringValidator()
example_str := "https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web"
fmt.Printf("%v\n", strvalidator.IsValidURL(example_str))
The above example will output:
true
IsValidMACAddr is Validates whether the value is a valid h/w mac address
func (s *StringValidator) IsValidMACAddr(str string) bool
Example:
strvalidator := strutils.NewStringValidator()
example_str := "02-f3-71-eb-9e-4b"
fmt.Printf("%v\n", strvalidator.IsValidMACAddr(example_str))
The above example will output:
true
IsValidIPAddr is Validates whether the value to be exactly a given validation types (IPv4, IPv6, IPv4MappedIPv6, IPv4CIDR, IPv6CIDR, IPv4MappedIPv6CIDR OR IPAny)
func (s *StringValidator) IsValidIPAddr(str string, cktypes ...int) (bool, error)
Example:
strvalidator := strutils.NewStringValidator()
example_str := "2001:470:1f09:495::3:217.126.185.21"
fmt.Printf("%v\n", strvalidator.IsValidIPAddr(example_str,strutils.IPv4MappedIPv6,strutils.IPv4))
The above example will output:
true
IsValidFilePath is Validates whether the value is a valid FilePath without relative path
func (s *StringValidator) IsValidFilePath(str string) bool
Example:
strvalidator := strutils.NewStringValidator()
example_str := "a-1-s-d-v-we-wd_+qwd-qwd-qwd.txt
fmt.Printf("%v\n", strvalidator.IsValidFilePath(example_str))
The above example will output:
true
IsValidFilePathWithRelativePath is Validates whether the value is a valid FilePath (allow with relative path)
func (s *StringValidator) IsValidFilePathWithRelativePath(str string) bool
Example:
strvalidator := strutils.NewStringValidator()
example_str := "/asdasd/asdasdasd/qwdqwd_qwdqwd/12-12/a-1-e-r-t-_1_21234_d_1234_qwed_1423_.txt"
fmt.Printf("%v\n", strvalidator.IsValidFilePathWithRelativePath(example_str))
The above example will output:
true
IsPureTextStrict is Validates whether the value is a pure text, Validation use native
func (s *StringValidator) IsPureTextStrict(str string) (bool, error)
Example:
strvalidator := strutils.NewStringValidator()
example_str := `abcd/>qwdqwdoijhwer/>qwdojiqwdqwd</a>qwdoijqwdoiqjd`
fmt.Printf("%v\n", strvalidator.IsPureTextStrict(example_str))
The above example will output:
false
IsPureTextNormal is Validates whether the value is a pure text, Validation use Regular Expressions
func (s *StringValidator) IsPureTextNormal(str string) (bool, error)
Example:
strvalidator := strutils.NewStringValidator()
example_str := `Foo<script type="text/javascript">alert(1337)</script>Bar`
fmt.Printf("%v\n", strvalidator.IsPureTextNormal(example_str))
The above example will output:
false
AssertLog formats its arguments using default formatting, analogous to t.Log
AssertLog(t *testing.T, err error, msgfmt string, args ...interface{})
AssertEquals asserts that two objects are equal.
AssertEquals(t *testing.T, v1 interface{}, v2 interface{}, msgfmt string, args ...interface{})
AssertNotEquals asserts that two objects are not equal.
AssertNotEquals(t *testing.T, v1 interface{}, v2 interface{}, msgfmt string, args ...interface{})
AssertFalse asserts that the specified value is false.
AssertFalse(t *testing.T, v1 bool, msgfmt string, args ...interface{})
AssertTrue asserts that the specified value is true.
AssertTrue(t *testing.T, v1 bool, msgfmt string, args ...interface{})
AssertNil asserts that the specified value is nil.
AssertNil(t *testing.T, v1 interface{}, msgfmt string, args ...interface{})
AssertNotNil asserts that the specified value isn't nil.
AssertNotNil(t *testing.T, v1 interface{}, msgfmt string, args ...interface{})
AssertLessThan asserts that the specified value are v1 less than v2
AssertLessThan(t *testing.T, v1 interface{}, v2 interface{}, msgfmt string, args ...interface{})
AssertLessThanEqualTo asserts that the specified value are v1 less than v2 or equal to
AssertLessThanEqualTo(t *testing.T, v1 interface{}, v2 interface{}, msgfmt string, args ...interface{})
AssertGreaterThan nsserts that the specified value are v1 greater than v2
AssertGreaterThan(t *testing.T, v1 interface{}, v2 interface{}, msgfmt string, args ...interface{})
AssertGreaterThanEqualTo asserts that the specified value are v1 greater than v2 or equal to
AssertGreaterThanEqualTo(t *testing.T, v1 interface{}, v2 interface{}, msgfmt string, args ...interface{})
AssertLengthOf asserts that object has a length property with the expected value.
AssertLengthOf(t *testing.T, v1 interface{}, v2 interface{}, msgfmt string, args ...interface{})
Please feel free. I hope it is helpful for you