1. 程式人生 > >Go strings 字串處理包常用方法詳解

Go strings 字串處理包常用方法詳解

golang字串相關操作主要使用strings包下相對應方法,本文主要介紹strings包下一些常用方法的使用方法。
函式:Contain(s,str string) bool
說明:查詢子串是否在指定的字串中
例項:

package main
import (
    "fmt"
    "strings"
)
func main() {
    fmt.Println(strings.Contains("TigerwolfC", "wolf")) //true
    fmt.Println(strings.Contains("TigerwolfC", "bar")) //false
    fmt.Println(strings.Contains("TigerwolfC", ""))    //true
    fmt.Println(strings.Contains("", ""))    //true 這裡要特別注意
    fmt.Println(strings.Contains("我是中國人", "我"))     //true
}

函式: ContainsAny(s, chars string) bool
說明: 判斷字串 s 中是否包含 chars 中的任何一個字元,如果有返回 true,否則返回false
例項:

 str := "Hello World"
 fmt.Println(strings.ContainsAny(str, "W"))          // true
 fmt.Println(strings.ContainsAny("foo", ""))          // false
 fmt.Println(strings.ContainsAny(str, "def"))        // true
 fmt.Println(strings.ContainsAny("", ""))             // false

函式: Count(s, sep string) int
說明: 判斷字元 sep 在字串 s 中第一次出現的位置,如果成功返回sep的位置
例項:

 str := "Hello World"
 fmt.Println(strings.Count(str, "e"))   //程式輸出 1

函式: EqualFold(s, t string) bool
說明: 判斷字串 s 是否與字串 t 相等,並且不區分大小寫
例項:

str := "Hello World"
fmt.Println(strings.EqualFold(str, "hello world"))  //程式輸出 true

函式: Fields(s string) []string
說明: 將字串 s 以空格為分隔符拆分成若干個字串,若成功則返回分割後的字串切片
例項:

  str := "Hello World"
  for _, v := range strings.Fields(str) {
        fmt.Println(v)
   }
//程式輸出 “Hello” 和 "World"

函式: HasPrefix(s, prefix string) bool
說明: 判斷字串 s 是否是以字元 prefix 開頭,如果是返回 true 否則返回 false
例項:

  str := "Hello World"
  fmt.Println(strings.HasPrefix(str, "He"))  //程式輸出 true

函式: HasSuffix(s, suffix string) bool
說明: 判斷字串 s 是否是以字元 suffix 結束,如果是返回 true 否則返回 false
例項:

str := "Hello World"
fmt.Println(strings.HasSuffix("str ", "orld")) //程式輸出 true

函式: Index(s, sep string) int
說明: 判斷字元 sep 在字串 s 中第一次出現的位置,如果成功則返回sep位置的索引,如果字元 sep 不在字串 s 中則返回 -1
例項:

 str := "Hello World"
 fmt.Println(strings.Index(str, "e"))   //程式輸出 1
 fmt.Println(strings.Index(str, "c"))   //程式輸出 -1

函式: func LastIndex(s, sep string) int
說明:返回子串 sep 在字串 s 中最後一次出現的位置,如果找不到,則返回 -1,如果 sep 為空,則返回字串的長度
例項:

 str := "Hello World"
 fmt.Println(strings.LastIndex(str, "h"))   //程式輸出 -1
 fmt.Println(strings.LastIndex(str, "o"))   //程式輸出 7
 fmt.Println(strings.LastIndex(str, ""))    //程式輸出 11

函式:func IndexAny(s, chars string) int
說明:返回字串 chars 中的任何一個字元在字串 s 中第一次出現的位置, 如果找不到,則返回 -1,如果 chars 為空,則返回 -1
例項:

str := "Hello World"
fmt.Println(strings.IndexAny(str, "abc"))   //程式輸出 -1
fmt.Println(strings.IndexAny(str, "dof"))   //程式輸出 4
fmt.Println(strings.IndexAny(str, ""))      //程式輸出 -1

函式:func Join(a []string, sep string) string
說明:Join 將 a 中的子串連線成一個單獨的字串,子串之間用 sep 分隔
例項:

s := []string{"foo", "baa", "bae"}
fmt.Println(strings.Join(s, ", ")) // 返回字串:foo, baa, bae

函式:func Repeat(s string, count int) string
說明:將 count 個字串 s 連線成一個新的字串
例項:

s := "Good!"
fmt.Println(strings.Repeat(s, 3)) // "Good!Good!Good!"

函式:func ToUpper(s string) string
說明:將 s 中的所有字元修改為其大寫格式,對於非 ASCII 字元,它的大寫格式需要查錶轉換
// ToLower
函式:func ToLower(s string) string
說明:將 s 中的所有字元修改為其小寫格式,對於非 ASCII 字元,它的小寫格式需要查錶轉換
函式:func ToTitle(s string) string
說明:ToTitle 將 s 中的所有字元修改為其 Title 格式,大部分字元的 Title 格式就是其 Upper 格式,只有少數字符的 Title 格式是特殊字元, 這裡的 ToTitle 主要給 Title 函式呼叫

s := "heLLo worLd Abc"
fmt.Println(us := strings.ToUpper(s)) // "HELLO WORLD ABC"
fmt.Println(strings.ToLower(s)) // "hello world abc"
fmt.Println(strings.ToTitle(s)) // "HELLO WORLD ABC"

函式:func Trim(s string, cutset string) string
說明:將刪除 s 首尾連續的包含在 cutset 中的字元
函式:func TrimLeft(s string, cutset string) string
說明:TrimLeft 將刪除 s 頭部連續的包含在 cutset 中的字元
函式:func TrimRight(s string, cutset string) string
說明:TrimRight 將刪除 s 尾部連續的包含在 cutset 中的字元
例項:

s := " Hello 世界! "
ts := strings.Trim(s, " Helo!")
fmt.Printf("%q\n", ts) // "世界"
fmt.Printf("[%q]", strings.Trim(" !!! Achtung !!! ", "! ")) // ["Achtung"]

tr := strings.TrimLeft(s, " Helo")
fmt.Printf("%q\n", tr) // "世界! "

tx := strings.TrimRight(s, " 世界!")
fmt.Printf("%q\n", tx) // " Hello"

// TrimPrefix 刪除 s 頭部的 prefix 字串
// 如果 s 不是以 prefix 開頭,則返回原始 s
函式:func TrimPrefix(s, prefix string) string
說明:TrimPrefix 刪除 s 頭部的 prefix 字串,如果 s 不是以 prefix 開頭,則返回原始 s
例項:

s := "@[email protected]世界!"
ts := strings.TrimPrefix(s, "@")
fmt.Printf("%q\n", ts) // " [email protected]世界!"
tx:= strings.TrimPrefix(s, "$")
fmt.Printf("%q\n", tx) // " @[email protected]世界!"

函式:func TrimSuffix(s, suffix string) string
說明:TrimSuffix 刪除 s 尾部的 suffix 字串,如果 s 不是以 suffix 結尾,則返回原始 s
例項:

s := "Hello 世界!!!!!"
ts := strings.TrimSuffix(s, "!!!!")
fmt.Printf("%q\n", ts) // "Hello 世界!"

函式:func Replace(s, old, new string, n int) string
說明:Replace 返回 s 的副本,並將副本中的 old 字串替換為 new 字串替換次數為 n 次,如果 n 為 -1,則全部替換,如果 old 為空,則在副本的每個字元之間都插入一個 new
例項:

fmt.Println(strings.Replace("ABAACEDF", "A", "a", 2)) // aBaACEDF
fmt.Println(strings.Replace("ABAACEDF", "A", "a", -1)) // aBaaCEDF

golang中字串和各種int型別之間的相互轉換方式
string轉成int:
int, err := strconv.Atoi(string)
string轉成int64:
int64, err := strconv.ParseInt(string, 10, 64)
int轉成string:
string := strconv.Itoa(int)
int64轉成string:
string := strconv.FormatInt(int64,10)

持續更新中
如有不對歡迎指正,相互學習,共同進步。