Skip to content

Instantly share code, notes, and snippets.

@mumunuu
Last active January 22, 2021 07:49
Show Gist options
  • Save mumunuu/cafe3080eb719905b733436d175f8341 to your computer and use it in GitHub Desktop.
Save mumunuu/cafe3080eb719905b733436d175f8341 to your computer and use it in GitHub Desktop.
go strings package 정리
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