Go語言基礎學習六-字符串

Go語言基礎學習六-字符串

   大部分情況下,Go語言字符串的字節使用UTF-8編碼(,世界文本文件編碼標準一個英文字符表示一個字節,一箇中文用三個字節表示)表示Unicode編碼(可以表示成世界各種寫作系統的字符),Go語言的字符串是一個用UTF-8編碼的變寬字符序列,它的每一個字符由一個或多個字節表示。

    字符串字面量使用雙引號“和反引號來創建,雙引號支持轉義序列,反引號表示原生的字符串字面量,不支持任何轉義序列。字符串可以直接相加和比較,這和java一樣。

     所有包含ASCLL(0-9十個數字,大小寫英文字母,及專用符號)字符的字符串都可以使用切片操作:

     s[n],s中第n位字符

     s[n:m],從位置n到位置m-1處取得的字符串

     s[:m],從索引位置爲0到位置爲m-1處取得的字符串

     len(s),字符串s中的字節數

     len([]rune(s)),字符串中的字符個數//注意與len(s)的區別

     []rune(s) ,將字符串s轉換成一個Unicode碼點(碼點就是數字,用於表示字符的數字)

     string (chars), 將一個[] rune或者[]int32轉換成字符串。

     []byte(s),無副本地將s字符串轉換成一個原始字節的切片數組,不保證轉換的字節是合法的UTF-8編碼字節。

     string(bytes) ,無副本地將[]byte 或者[]unit8轉換成字符串,不保證轉換的字節是合法的UTF-8編碼字節。

     string(i),將任意數字類型的i轉換成字符串,假設i是一個Unicode碼點。如i是65,則返回”A”

一個單一的字符可以用單一的rune來表示。string(char)可以將一個字符轉換成字符串。還可以準備好一個字符串切片,然後使用strings.Join()來將所有的字符串串連起來,還有一種方法就是使用bytes.Buffer(類似於Java的StringBuilder)例如:

      var buffer bytes.Buffer

       for{

            if piece,ok := getNextValidString();ok{

               buffer.WriteString(piece)

              }else{

                    break;

                     }

         }

          fat.Print(buffer.String(),”\n”)

      for index ,char:= range string也可以用於一個字符一個字符的迭代字符串每次迭代產生一個索引位置,和一個碼點。strings.Index(s,”match”)獲取字符串s中匹配match的第一個索引,strings.LastIndex(s,”match”)獲取字符串s中匹配match的最後一個索引。

strings.IndexFunc(line,func(rune)bool),這個函數將字符串line中的每一個字符碼點傳入第二個參數函數中,當改函數處理這個字符且返回爲true時則IndexFunc返回索引位置。

     strings.Splite(s,”,”),以,爲分隔符分割字符串,strings.Splite(s,”,”)同理但是保留分割符“,”,如果想按兩個字符以上爲分隔符,使用strings.FieldsFunc()函數:

     strings.FiledsFunc(record,fun (char rune) bool{

        switch char {

              case ‘\t,’’*’,’|’:return true//以空格,*,|爲分隔符分割

           }

              return false

     })

        strings.Replace(string,”\t”,” “ ,-1)將\t替換爲“ ”-1 表示沒有替換次數限制。

        常用的一些字符串函數列表如下(除了string包還有strconv包,utf8包,unicode包,regexp包可以操作字符串):


   

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章