Go에서 문자열 조작: 텍스트 업데이트 방법

Go에서 문자열 조작: 텍스트 업데이트 방법

문자열 조작은 소프트웨어 개발의 기본입니다. 결국 대부분의 프로그래밍 언어는 문자열 유형을 제공합니다. 문자열은 문자, 숫자 및 기호의 시퀀스입니다.

문자열 조작은 텍스트 처리 및 데이터 분석에서 웹 개발에 이르기까지 다양한 응용 프로그램에 유용합니다. 널리 사용되는 문자열 조작 작업은 연결, 데이터 유효성 검사, 추출 및 서식 지정입니다. Go는 표준 라이브러리에서 “문자열”이라는 문자열 조작 패키지를 제공합니다.

문자열 패키지

문자열 패키지 는 문자열 조작 및 기타 작업을 위한 다양하고 유용한 기능을 제공합니다. 이 패키지에는 하위 문자열 작업, 트리밍, 문자열 비교, 문자열 변환, 문자열 작성, 분할 등의 기능이 포함되어 있습니다.

가져오기 목록에 패키지 이름을 지정하여 strings 패키지를 가져올 수 있습니다.

import "strings"

하위 문자열 검색

strings 패키지 는 하위 문자열 검색을 위한 세 가지 함수 인 Contains 함수, ContainsAny 함수 및 ContainsRune 함수를 제공합니다.

포함 함수는 지정된 문자열에 하위 문자열이 포함되어 있는지 확인합니다 . ContainsAny 함수는 문자열에 하위 문자열의 문자가 포함되어 있는지 확인하고 ContainsRune 함수 는 문자열에 룬(유니코드 문자)이 포함되어 있는지 확인합니다.

import (
    "fmt"
    "strings"
)

func main() {
    aString: = "Hello, World!"
    substring: = "World"
    characters: = "aeiou"
    aRune: = 'o'


    fmt.Println(strings.Contains(aString, substring)) // Output: true
    fmt.Println(strings.ContainsAny(aString, characters)) // Output: true
    fmt.Println(strings.ContainsRune(aString, aRune)) // Output: true
}

Index , IndexAny , IndexByteIndexFunc 함수 를 사용하여 하위 문자열의 인덱스를 검색할 수 있습니다 . Index 함수는 하위 문자열이 다른 주어진 문자열에서 발생하는 경우 해당 하위 문자열의 인덱스를 반환합니다 . IndexAny 함수 는 유니코드 코드 포인트의 첫 번째 인스턴스 인덱스를 반환하거나 문자가 하나도 없으면 -1 을 반환합니다.

import (
    "fmt"
    "strings"
)

func main() {
    aString: = "Hello, world!"
    substring: = "world"
    chars: = "wrld"
    byteCharacter: = byte('o')
    aRune: = rune('o')

    fmt.Println(strings.Index(aString, substring)) // Output: 7
    fmt.Println(strings.IndexAny(aString, chars)) // Output: 7
    fmt.Println(strings.IndexByte(aString, byteCharacter)) // Output: 4

    f: = func(r rune) bool {
        return r == 'o'
    }

    fmt.Println(strings.IndexFunc(aString, f)) // Output: 4
    fmt.Println(strings.IndexRune(aString, aRune)) // Output: 4
}

IndexByte 는 문자열에서 바이트 문자의 첫 번째 인스턴스 인덱스 또는 -1 을 반환합니다 . IndexFunc 함수 는 지정된 함수를 만족하는 첫 번째 유니코드 포인트의 문자열에 인덱스를 반환합니다. 마지막으로 IndexRune 함수는 룬의 유니코드 코드 포인트의 첫 번째 인스턴스 인덱스를 반환합니다.

Go에서 하위 문자열 바꾸기

ReplaceReplaceAll 함수는 하위 문자열을 교체하는 데 도움이 됩니다 . 바꾸기 기능 은 문자열, 원래 하위 문자열, 대체 및 여러 대체를 가져옵니다. ReplaceAll 함수 는 문자열, 초기 하위 문자열 및 교체만 받습니다.

import (
    "fmt"
    "strings"
)

func main() {
    theString: = "This is a test string to be modified."
    fmt.Println(strings.Replace(theString, "is", "was", 1))
    fmt.Println(strings.Replace(theString, "is", "was", -1))
    fmt.Println(strings.ReplaceAll(theString, "is", "was"))
}

문자열 내의 모든 항목을 바꾸기 위해 Replace 및 ReplaceAll을 모두 사용할 수 있습니다.

Go 교체 작업의 결과

문자열 분할 및 결합

문자열 패키지에는 문자열 조각을 반환하는 문자열 분할을 위한 Split , SplitAfter , SplitAfterNSplitN 함수가 포함되어 있습니다.

Split 메서드 는 지정된 구분 기호로 분할합니다. Split 메서드 와 유사하게 SplitAfter 메서드는 문자열을 분할하지만 결과에 구분 기호를 포함합니다.

import (
    "fmt"
    "strings"
)

func main() {
    s: = "This is a test string to be split."


    fmt.Println(strings.Split(s, ""))
    fmt.Println(strings.SplitAfter(s, ""))
    fmt.Println(strings.SplitAfterN(s, "", 3))
    fmt.Println(strings.SplitN(s, "", 3))
}

SplitAfterN 메서드는 문자열을 지정된 최대 부분 문자열로 분할한다는 점을 제외하면 SplitAfter 함수 와 비슷 합니다. SplitN 메서드 는 하위 문자열에 구분 기호를 포함하지 않고 문자열을 지정된 최대 수로 분할합니다.

strings 패키지 의 Join 함수를 사용하여 문자열을 결합할 수 있습니다 . Join 함수는 슬라이스와 구분 기호를 사용합니다 .

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Join([]string{"Hello", "World"}, ":"))
   // Output: "Hello:World"
}

문자열 대소문자 조작

문자열 대/소문자 조작은 문서 작업을 포함하여 많은 작업에 편리합니다. 소문자 에는 ToLower 함수 , 대문자 에는 ToUpper 함수, 제목 케이싱 에는 ToTitle 함수를 사용할 수 있습니다.

import (
    "fmt"
    "strings"
)

func main() {
    s: = "This is a test string."


    fmt.Println(strings.ToLower(s)) // this is a test string.
    fmt.Println(strings.ToUpper(s)) // THIS IS A TEST STRING.
    fmt.Println(strings.ToTitle(s)) // THIS IS A TEST STRING.
}

Go에서 문자열 만들기

문자열 빌더는 Go에서 효율적인 연결을 허용하는 유형입니다. bytes.Buffer 유형 은 일반적으로 사용되는 문자열 빌더 중 하나입니다. bytes.Buffer 메서드는 + 작업 및 Join 함수 와 달리 새 복사본을 만들 필요 없이 효율적인 문자열 추가를 허용하는 작업에 대한 읽기 및 쓰기 메서드를 사용하여 바이트의 확장 가능한 버퍼를 구현합니다 .

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder

    // Write some strings to the builder
    b.WriteString("This ")
    b.WriteString("is ")
    b.WriteString("a ")
    b.WriteString("test ")
    b.WriteString("string.")

    // Get the length of the builder
    fmt.Println(b.Len())

    // Convert the builder to a string
    str: = b.String()
    fmt.Println(str)

    // Reset the builder
    b.Reset()

    // Write some more strings to the builder
    b.WriteString("This ")
    b.WriteString("is ")
    b.WriteString("another ")
    b.WriteString("test ")
    b.WriteString("string.")

    // Get the capacity of the builder
    fmt.Println(b.Cap())

    // Convert the builder to a string again
    str = b.String()
    fmt.Println(str)
}

main 함수 는 효율적인 문자열 빌드를 위해 strings.Builder 유형을 사용하는 방법을 보여줍니다 . Strings.Builder 형식 의 WriteString 메서드는 문자열 시퀀스를 서로 확장하고 Len 메서드는 빌드된 문자열의 길이를 반환합니다.

String 메서드는 빌더 의 콘텐츠를 문자열로 변환하고 Reset 메서드는 추가 문자열 빌드를 위해 빌더를 재설정합니다.

Cap 메서드는 빌더의 용량을 반환합니다 . Go가 문자열에 할당한 현재 공간입니다.

문자열 구축 작업의 결과

Go에서 문자열 트리밍

strings 패키지는 Trim , TrimLeft , TrimPrefix , TrimRight , TrimSpace TrimSuffix 함수 에서 문자열을 다듬는 기능도 제공 합니다.

import (
    "strings"
    "fmt"
)

func main() {
    // the full string
    s: = "Hello, World!"

    // the element for the trim
    prefix: = "Hello"
    suffix: = "World!"

    // trims a string by specified trim set
    fmt.Println(strings.Trim(s, "!"))

    // trims out by spaces in the beginning and end of the string
    fmt.Println(strings.TrimSpace(s))

    // trims from the left string by specified trim set
    fmt.Println(strings.TrimLeft(s, "Hello"))

    // trims out from the right string by specified trim set
    fmt.Println(strings.TrimRight(s, "World!"))

    // trims out a prefix
    fmt.Println(strings.TrimPrefix(s, prefix))

    // trims out a specific suffix
    fmt.Println(strings.TrimSuffix(s, suffix))
}

주요 기능은 트리밍 기능을 사용하는 방법을 보여줍니다 . 다른 함수는 다양한 방법으로 s 문자열을 트리밍합니다 .

트리밍 작업 결과

Go에서 문자열 형식을 지정할 수 있습니다.

Go 표준 라이브러리는 문자열 형식화를 위한 fmt 패키지도 제공합니다. fmt 패키지는 Go에서 효율적인 문자열 형식화를 위해 C 스타일 형식화 동사를 사용합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다