Last active
January 22, 2021 07:49
-
-
Save mumunuu/cafe3080eb719905b733436d175f8341 to your computer and use it in GitHub Desktop.
go strings package 정리
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func Compare(a, b string) int //두 문자열을 알파벳으로 비교해서 int로 반환 | |
func Contains(s, substr string) bool //s에 substr에 속해 있는지 확인 | |
func ContainsAny(s, chars string) bool //chars가 s에 하나라도 속해 있는지 확인 ContainsAny("test", "exxxxx") // true | |
func ContainsRune(s string, r rune) bool //s 스트링 안에 rune 타입으로 contains 됐는지 확인 | |
func Count(s, substr string) int //s 문자열 안에, substr이 몇번이나 속해 있는지 확인 (중복갯수 확인) | |
func EqualFold(s, t string) bool //대소문자 구분없이 똑같은지 확인 "GO", "go"는 true | |
func Fields(s string) []string //스트링이 하나 이상의 화이트스페이스(스페이스 공백)으로 되어 있는 경우 배열로 분할함 | |
func FieldsFunc(s string, f func(rune) bool) []string //함수 조건식을 포함하여 split하는 기능 strings.FieldsFunc("!@#!#foo1;bar2,baz3...", f)) //["foo1" "bar2" "baz3"] | |
func HasPrefix(s, prefix string) bool //s가 prefix로 시작하는지 여부 | |
func HasSuffix(s, suffix string) bool //s가 suffix로 끝나는지 여부.. 대소문자 구분함 | |
func Index(s, substr string) int //substr이 시작하는 s의 인덱스. 없으면 -1 | |
func IndexAny(s, chars string) int // chars의 어떤 문자열이 s에 하나라도 속해있는 경우 제일먼저 매칭되는 인덱스를 반환. 없으면 -1 "chicken", "aeouyi"의 경우 i가 치킨 2번 요소와 일치하므로 2를 반환. | |
func IndexByte(s string, c byte) int //s 스트링 안에 c 바이트 비교 (타입) | |
func IndexFunc(s string, f func(rune) bool) int //예제상으로, strings.IndexFunc("Hello, 世界", f) 한문이 s에서 index 7번째 위치하므로 7을 반환. 함수 형식에 일치하는 유니코드포인트가 없으면 -1 | |
func IndexRune(s string, r rune) int //룬으로 인덱스 s찾기. | |
func Join(elems []string, sep string) string //스트링 배열을 string으로 합치기 strings.Join([]string{"foo", "bar", "baz"}, "") //foobarbaz | |
func LastIndex(s, substr string) int //s에서 substr이 일치하는 인덱스를 가장 오른쪽부터 찾기 없으면 -1 | |
func LastIndexAny(s, chars string) int //chars에 속한 어떤 알파벳이라도, s에 속한다면 가장 마지막 인덱스를 반환. 없으면 -1 //strings.LastIndexAny("go gopher", "rodent") rodent의 r이 go gopher 가장 마지막에 있기 때문에 8을 반환 | |
func LastIndexByte(s string, c byte) int //byte로 가장 마지막 인덱스 찾기. | |
func LastIndexFunc(s string, f func(rune) bool) int //해당하는 조건으로 가장 마지막 인덱스 찾기. strings.LastIndexFunc("go 123", unicode.IsNumber) //5 | |
func Map(mapping func(rune) rune, s string) string //s 스트링을 매핑된 함수로 치환하는 복사본을 반환. | |
package main | |
import ( | |
"fmt" | |
"strings" | |
) | |
func main() { | |
rot13 := func(r rune) rune { | |
//아스키 테이블을 참고하여, A는 65임 | |
switch { | |
case r >= 'A' && r <= 'Z': //대문자일 경우 | |
return 'A' + (r-'A'+13)%26 // 만약 B일 경우에, 65 + (66 - 65 + 13)%26 이므로 79가 된다. 79는 알파벳 O | |
case r >= 'a' && r <= 'z': //소문자일 경우 | |
return 'a' + (r-'a'+13)%26 | |
} | |
return r //특수문자나 숫자등 대문자/소문자에 해당하지 않으면 그냥 반환 | |
} | |
fmt.Println(strings.Map(rot13, "'AAAABBBB brillig@@@ and the slithy gopher...")) //'NNNNOOOO oevyyvt@@@ naq gur fyvgul tbcure... | |
} | |
func Repeat(s string, count int) string //해당 문자열을 count만큼 반복하여 새로운 스트링을 반환해줌 | |
func Replace(s, old, new string, n int) string//기존s의 스트링에서, old를 찾아, 세번째 인자로 바꾸고, int가 n번만큼반복. 0보다 작으면 무한 | |
package main | |
import ( | |
"fmt" | |
"strings" | |
) | |
func main() { | |
fmt.Println(strings.Replace("oink oink oink", "in", " ", 2)) | |
fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1)) | |
} | |
func ReplaceAll(s, old, new string) string //s에서, old를 찾아, 새로운 스트링으로 모두 변경된 새로운 스트링을 반환 | |
func Split(s, sep string) []string //s스트링을 sep에 해당하는 문자열로 쪼개 배열로 반환해줌. 해당되는 것이 없으면 기존 스트링만 존재하는 배열로 반환 | |
func SplitAfter(s, sep string) []string // sep문자열에 해당하는 뒤에부터 배열로 반환해줌. | |
func SplitAfterN(s, sep string, n int) []string //기존 스트링s를, sep 조건으로 Split하는데, n개 만큼으로 쪼갠다. -1이면 무한, 1이면 1개 배열로 반환되므로 s가 0번 요소에 담긴 채 배열이 반환됨 | |
package main | |
import ( | |
"fmt" | |
"strings" | |
) | |
func main() { | |
fmt.Printf("%q\n", strings.SplitAfterN("a,b,c,d,e,f", ",", 3)) //["a," "b," "c,d,e,f"] | |
fmt.Printf("%q\n", strings.SplitAfterN("a,b,c,d,e,f", ",", 0)) //[] | |
fmt.Printf("%q\n", strings.SplitAfterN("a,b,c,d,e,f", "", 3)) //["a" "," "b,c,d,e,f"] | |
} | |
func SplitN(s, sep string, n int) []string //해당하는 s의 문자열을 sep 조건으로 n개의 문자열로 쪼갬 | |
package main | |
import ( | |
"fmt" | |
"strings" | |
) | |
func main() { | |
fmt.Printf("%q\n", strings.SplitN("a,b,c,d,e,f", ",", 3)) //["a" "b" "c,d,e,f"] | |
fmt.Printf("%q\n", strings.SplitN("a,b,c", ",", 2)) //["a" "b,c"] | |
z := strings.SplitN("a,b,c", ",", 0) | |
fmt.Printf("%q (nil = %v)\n", z, z == nil) //[] (nil = true) | |
} | |
func Title(s string) string //띄어쓰기로 구분된 각 맨 앞 문자를 대문자로 반환해줌.. 버그가 존재한다는데? | |
func ToLower(s string) string //소문자로 반환 | |
func ToLowerSpecial(c unicode.SpecialCase, s string) string //특수한 나라의 언어를 소문자로 반환 fmt.Println(strings.ToLowerSpecial(unicode.TurkishCase, "Önnek İş")) //önnek iş | |
func ToTitle(s string) string //유니코드 타이틀 케이스로 바꿈 | |
func ToTitleSpecial(c unicode.SpecialCase, s string) string //특수한 나라의 언어를 대문자로 바꿈 | |
func ToUpper(s string) string //유니코드 문자 매핑된 대문자 반환 | |
func ToUpperSpecial(c unicode.SpecialCase, s string) string //c로 매핑된 대문자로 반환 | |
func ToValidUTF8(s, replacement string) string //잘못된 UTF-8문자가 아닐 경우, 해당 문자열로 반환 fmt.Print(strings.ToValidUTF8("Geeks\xc5Geeks", "For")) //GeeksForGeeks | |
func Trim(s, cutset string) string //cutset이 하나라도 포함된 경우, 앞 뒤에서 모두 잘라냄 fmt.Print(strings.Trim("¡2323¡¡Hello, Gophers!2323!!", "!¡")) //2323¡¡Hello, Gophers!2323 | |
func TrimFunc(s string, f func(rune) bool) string //f를 만족하는 문자열 조각만을 반환. | |
func TrimLeft(s, cutset string) string //Trim의 앞에서만 자르기 | |
func TrimLeftFunc(s string, f func(rune) bool) string //f를 만족하는 TrimLeft | |
func TrimPrefix(s, prefix string) string //prefix가 만족하는 왼쪽의 문구를 잘라냄. | |
func TrimRight(s, cutset string) string //위에 설명된 오른쪽 버전 | |
func TrimRightFunc(s string, f func(rune) bool) string //위에 설명된 오른쪽 버전 | |
func TrimSpace(s string) string //앞뒤로 정의된 공백을 모두 삭제 fmt.Println(strings.TrimSpace(" \t\n Hello, Gophers \n\t\r\n")) //Hello, Gophers | |
func TrimSuffix(s, suffix string) string //TrimPrefix 뒷 버전... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment