strings
패키지는 UTF-8 로 인코딩된 문자열을 조작하는 함수를 구현한다.
GO 의 UTF-8 은 링크텍스트 에서 확인 가능
func Compare(a, b string) int
두 문자열을 사전 식으로 비교하여 a == b
이면 0
, a < b
이면 -1
, a > b
이면 1
이 된다.
이 함수는 문자열 비교 연산자 ==, <, > 등 보다 더 명확하고 항상 빠르다.
func Contains(s, substr string) bool
substr
내에 s
가 있는지 여부를 반환한다.
func ContainsAny(s, chars string) bool
문자의 유니코드 포인트가 s
내에 있는지 여부를 반환한다.
func ContainsRune(s string, r rune) bool
유니코드 포인트 r
이 s
내에 있는지 여부를 반환한다.
func Count(s, substr string) int
s
에서 substr
와 겹치는 인스턴스 수를 계산한다.
substr
이 빈 문자열일 경우 1 + s
의 유니코드 포인트 수를 반환한다.
fmt.Println(strings.Count("wow", "w")) // 2
fmt.Println(strings.Count("five", "")) // 1 + 4
func EqualFold(s, t string) bool
UTF-8 문자열로 해석되는 s
와 t
가 유니코드 대소문자 구분없이 동일한지 여부를 반환한다.
fmt.Println(strings.EqualFold("Go", "go")) // true
func Fields(s string) []string
unicode.IsSpace
에 의해 정의된대로 하나 이상의 연속 공백 문자로 문자열을 분할하여 슬라이스로 반환한다.
공백만 포함할 경우 빈 슬라이스를 반환한다.
func FieldsFunc(s string, f func(rune) bool) []string
f(c)
를 충족하는 유니코드 포인트의 각 실행에서 문자열 s
를 분할하고 s
의 슬라이스 슬라이스을 반환한다.
공백만 포함할 경우 빈 슬라이스를 반환한다.
func HasPrefix(s, prefix string) bool
func HasSuffix(s, suffix string) bool
문자열 s
가 HasPrefix
는 접두사로 시작하는지, HasSuffix
는 접미사로 끝나는지 여부를 테스트한다.
func Index(s, substr string) int
func IndexAny(s, chars string) int
func IndexByte(s string, c byte) int
func IndexFunc(s string, f func(rune) bool) int
func IndexRune(s string, r rune) int
Index
는 s
에 있는 substr
의 첫 번째 인스턴스의 인덱스를 반환하거나 s
에 substr
이 없으면 -1
을 반환한다.
IndexAny
는 s
의 chars
에서 유니코드 포인트의 첫 번째 인스턴스의 인덱스를 반환하거나 s
에 chars
의 유니코드 포인트가 없으면 -1
을 반환한다.
IndexByte
는 s
에 있는 c
의 첫 번째 인스턴스의 인덱스를 반환하거나 s
에 c
가 없으면 -1
을 반환한다.
IndexFunc
는 f(c)
를 만족하는 첫 번째 유니코드 포인트의 s
의 인덱스를 반환한다. 그렇지 않으면 -1
이다.
IndexRune
은 유니코드 포인트 r
의 첫 번째 인스턴스의 인덱스를 반환하거나 s
에 rune
이 없으면 -1
을 반환한다.
r
이 utf8.RuneError
가 유효하지 않은 UTF-8 바이트 시퀀스의 첫 번째 인스턴스를 반환한다.
func Join(elems []string, seq string) string
첫 번째 인수의 요소를 연결하여 단일 문자열을 만든다.
구분 문자열 seq
는 결과 문자열의 요소 사이에 배치된다.
func LastIndex(s, substr string) int
func LastIndexAny(s, chars string) int
func LastIndexByte(s string, c byte) int
func LastIndexFunc(s string, f func(rune) bool) int
LastIndex
는 s
에 있는 substr
의 마지막 인스턴스의 인덱스를 반환하거나 s
에 substr
이 없으면 -1
을 반환한다.
LastIndexAny
는 s
의 chars
에서 유니코드 포인트 마지막 인데스를 반환하거나 없으면 -1
반환한다.
LastIndexByte
는 s
에 있는 c
의 마지막 인스턴스 인덱스를 반환하고 없으면 -1
반환한다.
LastIndexFunc
는 f(c)
를 만족하는 마지막 유니코드 포인트의 s
에 대한 인덱스를 반환하고 그렇지 않으면 -1
이다.
func Map(mapping func(rune) rune, s string) string
매핑 함수에 따라 모든 문자가 수정된 문자열 s
의 복사본을 반환한다.
매핑이 음수값 반환하면 문자는 대체없이 삭제된다.
func Repeat(s string, count int) string
문자열 s
의 복사본 개수로 구성된 새 문자열을 반환한다.
count
가 음수거나 len(s) *count
결과가 오버플로우면 패닉이 발생한다.
func Replace(s, old, new string, n int) string
func ReplaceAll(s, old, new string) string
Replace
는 겹치지 않는 처음 n
개의 old
인스턴스가 new
로 대체된 문자열 s
의 복사본을 반환한다.
old
가 비어 있으면 문자열의 시작 부분과 각 UTF-8 시퀀스 뒤에 일치하여 k-rune
문자열에 대해 최대 k + 1
개의 대체를 생성한다.
n < 0
이면 교체 횟수에 제한이 없다.
ReplaceAll
의 경우 모든 old
인스턴스를 대체한다.
old
가 비어있을 경우는 Replace
와 동일하다.
func Split(s, seq string) []string
func SplitAfter(s, seq string) []string
func SplitAfterN(s, seq string, n int) []string
func SplitN(s, seq string, n int) []string
Split
은 s
를 seq
로 구분된 모든 하위 문자열로 분할하여 슬라이스로 반환한다.
s
에 seq
가 포함되어 있지 않으면 요소가 s
인 길이 1
의 슬라이스를 반환한다.
seq
가 비어 있다면 각 UTF-8 시퀀스 후 분할한다.
모두 비어 있다면 빈 슬라이스를 반환한다.
SplitAfter
의 경우 seq
의 각 인스턴스 다음에 있는 모든 하위 문자열로 슬라이스하고 해당 문자열의 슬라이스를 반환한다.
SplitAfterN
의 seq
의 각 인스턴스 다음에 s
를 부분 문자열로 분할하고 해당 부분 문자열의 슬라이스를 반환한다.
개수는 반환할 하위 문자열 수를 결정한다.
SplitN
는 s
를 seq
로 구분된 부분 문자열로 분할하고 해당 구분 기호 사이의 부분 문자열을 슬라이스로 반환한다.
문자열 수를 결정하는 것은 SplitAfterN
과 동일하다.
func Title(s string) string
func ToTitle(s string) string
func ToTitleSpecial(c unicode.SpecialCase, s string) string
Title
은 단어를 시작하는 모든 유니코드 문자가 제목 케이스의 복사본을 반환한다.
ToTitle
은 모든 유니코드 문자를 제목 케이스의 복사본을 반환한다.
ToTitleSpecial
은 모은 유니코드 문자를 제목 케이스로 매핑하여 특수 대소문자 규칙에 우선 순위를 부여하여 복사본을 반환한다.
func ToLower(s string) string
func ToLowerSpecial(c unicode.SpecialCase, s string) string
func ToUpper(s string) string
func ToUpperSpecial(c unicode.SpecialCase, s string) string
To[Lower|Upper]
는 모든 유니코드 문자가 [대 | 소]문자로 매핑되어 반환한다.
ToLowerSpecial
은 c
로 지정된 대소문자 매핑을 사용하여 모든 유니코드 문자를 [대 | 소]문자로 매핑한 복사본을 반환한다.
ToLower
는 모든 유니코드 문자가 대문자로 매핑되어 반환한다.
ToLowerSpecial
은 c
로 지정된 대소문자 매핑을 사용하여 모든 유니코드 문자를 대문자로 매핑하여 반환한다.
func ToValidUTF8(s, replacement string) string
유효하지 않은 UTF-8 바이트 시퀀스의 각 실행이 비어있을 수 있는 대체 문자열로 대체된 문자열 복사본을 반환한다.
func Trim(s, cutset string) string
func TrimFunc(s string, f func(rune) bool) string
func TrimLeft(s, cutset string) string
func TrimLeftFunc(s, f func(rune) bool) string
func TrimRight(s, cutset string) string
func TrimRightFunc(s, f func(rune) bool) string
func TrimPrefix(s, prefix string) string
func TrimSuffix(s, suffix string) string
func TrimSpace(s string) string
Trim
은 cutset
에 포함된 모든 선행 및 후행 유니코드 포인트가 제거된 문자열을 반환한다.
TrimFunc
은 f(c)
를 충족하는 모든 선행 및 후행 유니코드 포인트 c
가 제거된 문자열을 반환한다.
Trim[Left|Right]
는 cutset
에 포함된 모든 [선행 | 후행] 유니코드 포인트가 제거된 문자열을 반환한다.
Trim[Left|Right]Func
는 f(c)
를 만족하는 모든 [선행 | 후행] 유니코드 포인트가 제거된 문자열을 반환한다.
Trim[Prefix|Suffix]
는 [선행 | 후행] 접두사 문자열를 제거하고 반환한다.
TrimSpace
는 모든 선행 및 후행 공백이 제거된 문자열을 반환한다.
type Builder struct {
// 필터링 되거나 내보내지지 않은 필드 포함
addr *Builder // 값에 의한 복사를 감지하는 리시버
buf []byte // 버퍼
}
Builder
는 Write
메소드를 사용하여 문자열을 효율적으로 작성하는데 사용되는데 메모리 복사를 최소화한다.
초기화 되었다면 사용하는데 준비가 된 것이지만, 아니라면 빌더는 복사하여 사용하지 말자.
func (b *Builder) Cap() int
빌더의 기본 바이트 조각의 용량을 반환
func (b *Builder) Grow (n int)
필요한 경우 b
의 용량을 증가시켜 다른 n
바이트의 공간을 보장한다.
n
이 음수이면 패닉이 발생한다.
func (b *Builder) Len() int
누적된 바이트 수를 반환한다. b.Len() == len(b.String())
func (b *Builder) Reset()
빌더를 비워서 재설정한다.
func (b *Builder) String() string
누적된 문자열을 반환한다.
func (b *Builder) Write (p []byte) (int, error)
func (b *Builder) WriteByte (c byte) error
func (b *Builder) WriteRune (r rune) (int, error)
func (b *Builder) WriteString (s string) (int, error)
Write
는 p
의 내용을 b
의 버퍼에 추가한다.
항상 len(p), nil
을 반환한다.
WriteByte
는 b
의 버퍼에 c
바이트를 추가한다.
반환된 오류는 항상 nil
이다.
WriteRune
는 유니코드 포인트 r
의 UTF-8 인코딩을 b
의 버퍼에 추가한다.
r
의 길이와 nil
오류를 반환한다.
WriteString
은 s
의 내용을 b
의 버퍼에 추가한다.
s
의 길이와 nil
오류를 반환한다.
리더는 문자열에서 읽어 io.Reader
, io.ReaderAt
, io.ByteReader
, io.ByteScanner
, io.RuneReader
, io.RuneScanner
, io.Seeker
및 io.WriterTo
인터페이스를 구현한다.
Reader
의 제로 값은 빈 문자열의 Reader
처럼 작동한다.
type Reader struct {
s string
i int64 // 최근 읽은 인덱스
prevRune int // 이전 룬의 인덱스 또는 < 0
}
func NewReader(s string) *Reader
s
에서 읽은 새 Reader
를 반환한다.
bytes.NewBufferString
과 유사하지만 더 효율적이고 읽기 전용이다.
func (r *Reader) Len() int
문자열에서 읽지 않은 부분의 바이트 수를 반환한다.
func (r *Reader) Read(b []byte) (int, error)
io.Reader
인터페이스를 구현한다.
func (r *Reader) ReadAt(b []byte, off int64) (int, error)
io.ReaderAt
인터페이스를 구현한다.
func (r *Reader) ReadByte() (byte error)
io.ByteReader
인터페이스를 구현한다.
func (r *Reader) ReadRune() (ch rune, size int, err error)
io.RuneReader
인터페이스를 구현한다.
func (r *Reader) Reset(s string)
리더가 s
에서 읽도록 재설정한다.
func (r *Reader) Seek(offset int64, whence int) (int64, error)
io.Seeker
인터페이스를 구현한다.
func (r *Reader) Size() int64
기본 문자열의 원래 길이를 반환한다.
func (r *Reader) UnreadByte() error
io.ByteScanner
인터페이스를 구현한다.
func (r *Reader) UnreadRune() error
io.RuneScanner
인터페이스를 구현한다.
func (r *Reader) WriteTo(w io.Writer) (n int64, err error)
io.WriteTo
인터페이스를 구현한다.
Replacer
는 문자열 목록을 대체 항목으로 바꿔준다.
여러 고루틴에서 동시 사용에 안전하다.
type Replacer struct {
once sync.Once // 함수를 한번만 빌드
r replacer
oldnew []string
}
func NewReplacer(oldnew ... string) *Replacer
이전의 문자열 쌍 목록을 새 Replacer
로 반환해준다.
대체는 일치하는 대상 문자열에 나타나는 순서대로 수행된다.
홀수 개의 인수를 제공하면 패닉이 발생한다.
func (r *Replacer) Replace(s string) string
모든 교체가 수행된 s
의 복사본을 반환한다.
func (r *Replacer) WriteString(w io.Writer, s string) (int error)
모든 교체가 수행된 상태에서 s
를 w
에 쓴다.