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 , IndexByte 및 IndexFunc 함수 를 사용하여 하위 문자열의 인덱스를 검색할 수 있습니다 . 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에서 하위 문자열 바꾸기
Replace 및 ReplaceAll 함수는 하위 문자열을 교체하는 데 도움이 됩니다 . 바꾸기 기능 은 문자열, 원래 하위 문자열, 대체 및 여러 대체를 가져옵니다. 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을 모두 사용할 수 있습니다.
문자열 분할 및 결합
문자열 패키지에는 문자열 조각을 반환하는 문자열 분할을 위한 Split , SplitAfter , SplitAfterN 및 SplitN 함수가 포함되어 있습니다.
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 스타일 형식화 동사를 사용합니다.
답글 남기기