티스토리 뷰

GO Language

[GO] 문자열 (Strings)

OManager 2016. 8. 26. 11:40

1) 문자열 (Strings)

   문자열을 값으로 저장하는 자료셩으로 제어, 순수 문자열로 구분합니다. 

   문자열의 크기는 일반적으로 1Byte가 한 문자를 저장하지만,   한글, 중국어 등과 같은 문자는 3Byte가 한문자를 저장하는 경우도 있습니다.

2) 문자열 선언 (String Define)

package main
import "fmt"
func main() {
    // String assignments
    var sDefault string
    var sValueK string = "고프로그램"
    sValueE := "GoProgram"

    // String assignment confirmation
    fmt.Println(sDefault)  // "" Blank
    fmt.Println(sValueK)   // 고프로그램
    fmt.Println(sValueE)   // GoProgram
    
    // String length
    fmt.Println(len(sDefault)) // 0
    fmt.Println(len(sValueK))  // 15
    fmt.Println(len(sValueE))  // 9
}

- 문자열 선언입니다. 

    문자열의 일반적인 선언은 var stringName string 형태로 선언하면 된다.

    초기값 할당 선언은 var stringName string = "value" 형태로 선언하면 된다.

    단축형 할당 선언은 stringName := "value" 형태로 선언하면 된다. 

    문자열의 초기값을 할당하지 않으면 "" blank 값을 가지며 길이는 0 이다. 

    한국어의 경우 한글자에 3Byte의 길이를 사용한다. 

 

3) 제어 문자열 (Control String)

 

 package main

 import (

    "fmt"

 )

 func main() {

    // Result:

    // GoProgram

    fmt.Println("Result:" + "\n" + "GoProgram")

    // GoProgram

    fmt.Println("Result:" + "\r" + "GoProgram")

    // Result: GoProgram

    fmt.Println("Result:" + "\t" + "GoProgram")

    // Result:\GoProgram

    fmt.Println("Result:" + "\\" + "GoProgram")

    // Result:"GoProgram

    fmt.Println("Result:" + "\"" + "GoProgram")

 }

   - 제어 문자열은 \ 기호로 시작하는 문자열입니다. 

     문자의 출력에 영향을 주는 문자로서 

     \n : New line

     \r : Carriage return

     \t : Tab

     \\  : Backslash

     \" : Double quote  등이 있습니다. 

 

4) 문자열 연산 (String Operation)

 

 package main

 import (

   "fmt"

 )

 func main() {

    var sValueK string = "고프로그램"

    var sValueE string = "GoProgram"

    // 문자열 비교 하기

    fmt.Println(sValueK == sValueE)     // false

    fmt.Println(sValueK != sValueE)      // true

    fmt.Println(sValueK < sValueE)       // false

    fmt.Println(sValueK <= sValueE)     // false

    fmt.Println(sValueK >= sValueE)     // true

    fmt.Println(sValueK > sValueE)       // true

    // 문자열 더하기

    fmt.Println(sValueK + " " + sValueE)    

    // 고프로그램 GoProgram

    addString := sValueK + " " + sValueE

    fmt.Println(addString)                    

    // 고프로그램 GoProgram

    addString1 := sValueK

    addString1 += " "

    addString1 += sValueE

    fmt.Println(addString1)                    

    // 고프로그램 GoProgram

 }

   - 문자열은 비교 연산이 가능합니다. 

     문자열을 연결하려면, + 기호를 활용하여 연결 할 수 있습니다. 

 

5) 문자열 길이 (String Length)

 

 package main

 import (

    "fmt"

    "unicode/utf8"

 )

 func main(){

    var sDefault string

    var sValueK string = "고프로그램"

    var sValueE string = "GoProgram"

    // String length

    fmt.Println(len(sDefault)) // 0

    fmt.Println(len(sValueK)) // 15

    fmt.Println(len(sValueE)) // 9

    // UTF-8 Type Length

    fmt.Println(utf8.RuneCountInString(sDefault)) // 0

    fmt.Println(utf8.RuneCountInString(sValueK)) // 5

    fmt.Println(utf8.RuneCountInString(sValueE)) // 9

    // String Index

    fmt.Println(string(sValueE[0])) // G

    fmt.Println(string(sValueE[len(sValueE) - 1])) // m

 }

   - 문자열의 길이를 구하는 기능입니다. 

     문자열의 길이는 Len 함수를 사용하여 구할 수 있습니다.

     하지만, 한글, 중국어, 일어 등과 같이 3Byte 를 사용하는 문자열은 길이가 

     이상하게 결과를 도출합니다. 

     이 경우에는 RuneCountInString 함수를 사용하여 길이를 구할 수 있습니다. 

     문자열은 Index 를 가지고 있는데 첫번째 index 는 0 에서 시작합니다. 

 

6) 문자열의 출력 

 

 package main

 import (

    "fmt"

    "strings"

 )

 func main() {

    var sValueK string = "고프로그램"

    var sValueE string = "GoProgram"

    // 문자열 출력

    r := []rune(sValueK)

    fmt.Println(string(r[0])) //

    fmt.Println(string(sValueK[0])) // ê

    fmt.Println(string(sValueE[0])) // G

    // string package

    sPackage := " This is example "

    fmt.Println(strings.HasPrefix(sPackage, " Th")) // true

    fmt.Println(strings.HasSuffix(sPackage, "le ")) // true

    fmt.Println(strings.Contains(sPackage, "Test")) // false

    fmt.Println(strings.Index(sPackage, "i")) // 2

    fmt.Println(strings.LastIndex(sPackage, "i")) // 6

    fmt.Println(strings.Replace(sPackage, "Th", "th", 2)) 

    // this is example

    fmt.Println(strings.Count(sPackage, "i")) // 3

    fmt.Println(strings.Count(sPackage, "is")) // 2

    fmt.Println(strings.Repeat(sPackage, 2))      

    // This is exampleThis is example

    fmt.Println(strings.ToUpper(sPackage))           

    // THIS IS EXAMPLE

    fmt.Println(strings.ToLower(sPackage))           

    // this is example

    fmt.Println(strings.Trim(sPackage, "\r\n\t"))  

    // This is example

    fmt.Println(strings.TrimLeft(sPackage, " "))   

    //This is example

    fmt.Println(strings.TrimRight(sPackage, "\r\n\t "))    

    // This is example

    sPackage1 := "This;is;Test;string;example"

    rPackage := strings.Fields(sPackage)

    rPackage1 := strings.Split(sPackage1, ";")

    for _, val := range rPackage {

       fmt.Println(val)

    }

    for _, val := range rPackage1 {

       fmt.Println(val)

    }

    rTOs := strings.Join(rPackage, "+")

    fmt.Println(rPackage, rTOs)

 }

   - 문자열의 출력 기능입니다. 

     출력에 있어 주의 할 내용은 1Byte와 3Byte 문자에 따라 다르게 작동하므로 

     UTF-8 코드 자료인 rune 를 활용하여 출력합니다. 

     문자열의 출력은 strings 패키지를 활용하여 제어 가능한 함수들은 

     HasPreffix : 시작문자 비교하여 같으면 true

     HasSuffix : 종료문자 비교하여 같으면 true

     Contains : 포함문자 비교하여 있으면 true

     Index : 첫번째 만나는 위치  0 부터 시작

     LastIndex : 뒤에서 처음 만나는 위치를 앞에서부터 카운터 

     Replace : 문자열을 교체 

     Count : 문자열이 포함된 횟수

     Repert : 반복해서 출력 

     Upper : 문자열을 대문자로 전환

     Lower : 문자열을 소문자로 전환

     Trim : 왼쪽, 오른쪽 문자 삭제

     TrimLeft : 왼쪽 문자 삭제

     TrimRight : 오른쪽 문자 삭제

     Field : 문자열을 공백으로 분리하여 

     Split : 문자열을 분리 문자를 사용하여 분리

     Join : 분리된 문자열을 연결문자 사용하여 조합 합니다. 

     보다 많은 내용은 http://golang.org/pkg/strings 에서 알수있습니다.

     특히 출력에서 숫자를 문자로 또는 문자를 숫자로 바꾸는 경우가 많은데 

     이 경우에는 strconv.Atoi, strconvItoa 함수를 활용하시면 편리합니다. 

     마지막으로 문자열의 내용을 출력할 때는 

     range 와 for 문을 결합하여 사용하시면 편리합니다. 

'GO Language' 카테고리의 다른 글

[GO] Grid Library  (0) 2017.05.28
[GO] JWT Library  (0) 2017.05.26
[GO] 기초 자료 형 ( Elementary data types )  (0) 2016.08.23
[GO] 변수(Variables)  (0) 2016.08.22
[GO] 상수(Constants)  (0) 2016.08.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함