Golang 學習筆記(03)—— 字符串操作

本文為轉載,原文:Golang 學習筆記(03)—— 字符串操作

Golang

1、Contains

func Contains(s, substr string) bool這個函數(shù)是查找某個字符是否在這個字符串中存在,存在返回true.

package main
import "fmt"
import "strings"

func main(){
    fmt.Println(strings.Contains("chain", "ch"))
    fmt.Println(strings.Contains("ch", "chain"))
    fmt.Println(strings.Contains("chain", ""))    //true
    fmt.Println(strings.Contains("", ""))           //true 這里要特別注意
    fmt.Println(strings.Contains("我是中國人", "我"))     //true
}

運行結果:


2、ContainsAny

func ContainsAny(s, chars string) bool這個是查詢字符串中是否包含多個字符.

package main
import "fmt"
import "strings"

func main(){
    fmt.Println(strings.ContainsAny("chain", "b"))        // false
    fmt.Println(strings.ContainsAny("chain", "c & i")) // true
    fmt.Println(strings.ContainsAny("chain", ""))          // false
    fmt.Println(strings.ContainsAny("", ""))             // false
}

運行結果:


3、ContainsRune

func ContainsRune(s string, r rune) bool,這里邊當然是字符串中是否包含rune類型,其中rune類型是utf8.RUneCountString可以完整表示全部Unicode字符的類型

package main
import "fmt"
import "strings"

func main(){
 fmt.Println(strings.ContainsRune("chain", rune('c'))) //true
 fmt.Println(strings.ContainsRune("chain", 99))        //true
 fmt.Println(strings.Contains("我是中國人", "我"))     //true
}

運行結果:



其中99是c的Unicode編碼

4、Count

func Count(s, sep string) int這個的作用就是輸出,在一段字符串中有多少匹配到的字符.

package main
import "fmt"
import "strings"

func main(){
 fmt.Println(strings.Count("chainn", "nn")) //1
 fmt.Println(strings.Count("chainn", "n"))  //2
 fmt.Println(strings.Count("chain", ""))  // before & after each rune result:6
}

運行結果:


5、Index

func Index(s, sep string) int 這個函數(shù)是查找字符串,然后返回當前的位置,輸入的都是string類型,然后int的位置信息。

package main
import "fmt"
import "strings"

func main(){
  fmt.Println(strings.Index("chain", "h")) //1
  fmt.Println(strings.Index("chainn", "n")) //4
  fmt.Println(strings.Index("chainn", "q")) //4
  fmt.Println(strings.Index("我是中國人", "中"))     // 返回 6
}
}

運行結果:


注意
index是從0開始計數(shù)的

6、IndexAny

func IndexAny(s, chars string) int這個函數(shù)是一樣的查找,字符串第一次出現(xiàn)的位置,如果不存在就返回-1.

package main
import "fmt"
import "strings"

func main(){
    fmt.Println(strings.IndexAny("chainn", "n")) //4
    fmt.Println(strings.IndexAny("我是中國人", "中")) // 在存在返回 6
    fmt.Println(strings.IndexAny("我是中國人", "和")) // 在存在返回 -1
}

運行結果:


7、IndexByte

func IndexByte(s string, c byte) int,這個函數(shù)功能還是查找第一次粗線的位置,只不過這次C是byte類型的,查找到返回位置,找不到返回-1。

package main
import "fmt"
import "strings"

func main(){
    fmt.Println(strings.IndexByte("hello chain", 'c')) //6
    fmt.Println(strings.IndexByte("hello chain", 'b')) //-1
    //fmt.Println(strings.IndexAny("我是中國人", "中")) // 編譯報錯
}

運行結果:


8、IndexRune

func IndexRune(s string, r rune) int,還是查找位置,只不過這次是rune類型的。

package main
import "fmt"
import "strings"

func main(){
    fmt.Println(strings.IndexRune("chain", rune('c'))) //0
    fmt.Println(strings.IndexRune("chain", 's')) //  -1
    fmt.Println(strings.IndexRune("我是中國人", '中'))   //6
}

運行結果:


9、IndexFunc

func IndexFunc(s string, f func(rune) bool) int這個函數(shù)大家一看就知道了,是通過類型的轉換來用函數(shù)查找位置,我們來代碼看下哈。

package main
import "fmt"
import "strings"

func main() {
 fmt.Println(strings.IndexFunc("chaina", split)) //2
 fmt.Println(strings.IndexFunc("chbin", split)) //-1
}
func split(r rune) bool {
 if r == 'a' {
  return true
 }
 return false
}

10、LastIndex

func LastIndex(s, sep string) int 看到這個大家可能也明白了查找的是最后出現(xiàn)的位置,正好跟index相反。

package main
import "fmt"
import "strings"

func main() {
  fmt.Println(strings.LastIndex("chaina", "a")) // 5
}

運行結果:


11、LastIndexAny

func LastIndexAny(s, chars string) int這個跟indexAny正好相反,也是查找最后一個

package main
import "fmt"
import "strings"

func main() {
  fmt.Println(strings.LastIndexAny("chaina", "a")) // 5
}

運行結果:


12、EqualFold

func EnqualFold(s string, t string) bool,兩個字符串比較,忽略大小寫,返回bool類型。

package main
import "fmt"
import "strings"

func main() {
  fmt.Println(strings.EqualFold("chain", "CHAIN")) // true
  fmt.Println(strings.EqualFold("chain", "CHAI")) // false
}

運行結果:


13、Join

func Join(s []string, seq string) string將字符串數(shù)組按照指定的分隔符拼接成字符串。

package main
import "fmt"
import "strings"

func main() {
    s := []string{"foo", "bar", "baz"}
    fmt.Println(strings.Join(s, ", ")) // 返回字符串:foo, bar, baz
}

運行結果:


14、Map

func Map(mapping func(rune)rune, s string) string, 如果mapping方法返回個合法的字符串,改方法返回一個由mapping方法修改過的復制過來的字符串。

package main
import "fmt"
import "strings"

func main() {
     rot13 := func(r rune) rune {
        switch {
        case r >= 'A' && r <= 'Z':
            return 'A' + (r-'A'+13)%26
        case r >= 'a' && r <= 'z':
            return 'a' + (r-'a'+13)%26
        }
        return r
    }
    fmt.Println(strings.Map(rot13, "'Twas brillig and the slithy gopher..."))
}

運行結果:


15、Repeat

func Repeat(s string, count int)string,改方法返回一個新的重復指定次數(shù)的字符串。

package main
import "fmt"
import "strings"

func main() {
    fmt.Println("ba" + strings.Repeat("na", 2)) //banana
}

運行結果:


16、Replace

func Replace(s, old, new string, count int)string返回一個新的字符串,參數(shù)s是原來的字符串,old是需要被替換掉的字符串,new是要替代old的字符串,count是替換的次數(shù),如果為-1,則為全部替換。

package main
import "fmt"
import "strings"

func main() {
    fmt.Println(strings.Replace("oink oink oink", "k", "ky", 5))
    fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))
    fmt.Println(strings.Replace("oink oink oink", "k", "ky", -1))
}

運行結果:


17、Split

func Split(s, seq string)[]string將字符串按照指定的字符串分割生一個字符串數(shù)組。

package main
import "fmt"
import "strings"

func main() {
    fmt.Printf("%q\n", strings.Split("a,b,c", ","))
    fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a "))
    fmt.Printf("%q\n", strings.Split(" xyz ", ""))
    fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))
}

運行結果:


18、SplitN

func SplitN(s, seq string, count int)[]string將字符串按照指定的字符串分割生一個指定元素數(shù)量的字符串數(shù)組。該方法返回的數(shù)組將不保留分隔符。count參數(shù)為-1時效果如Split。

package main
import "fmt"
import "strings"

func main() {
    fmt.Printf("%q\n", strings.SplitN("/home/m_ta/src", "/", 1))
    fmt.Printf("%q\n", strings.SplitN("/home/m_ta/src", "/", 2))  
    fmt.Printf("%q\n", strings.SplitN("/home/m_ta/src", "/", -1)) 
    fmt.Printf("%q\n", strings.SplitN("home,m_ta,src", ",", 2))   
    fmt.Printf("%q\n", strings.SplitN("#home#m_ta#src", "#", -1)) 
}

運行結果:


19、SplitAfter

func SplitAfter(s, seq string)[]string將字符串按照指定的字符串分割生一個字符串數(shù)組。該方法返回的數(shù)組將保留分隔符,且至于每個元素的末端。

package main
import "fmt"
import "strings"

func main() {
  fmt.Printf("%q\n", strings.SplitAfter("/home/m_ta/src", "/")) //["/" "home/" "m_ta/" "src"]
}

運行結果:


20、SplitAfterN

func SplitAfterN(s, seq string, count int)[]string將字符串按照指定的字符串分割生一個指定元素數(shù)量的字符串數(shù)組。該方法返回的數(shù)組將保留分隔符,且至于每個元素的末端。count參數(shù)為-1時效果如SplitAfter。

package main
import "fmt"
import "strings"

func main() {
    fmt.Printf("%q\n", strings.SplitAfterN("/home/m_ta/src", "/", 2))  //["/" "home/m_ta/src"]
    fmt.Printf("%q\n", strings.SplitAfterN("#home#m_ta#src", "#", -1)) //["/" "home/" "m_ta/" "src"]
}

運行結果:


21、Title

func Title(s string)string該方法返回一個新的字符串,該字符串把原字符串的單詞首字母改為大寫,對中文沒有效果。

package main
import "fmt"
import "strings"

func main() {
    fmt.Println(strings.Title("her royal highness"))
    fmt.Println(strings.Title("her rOYal highness"))
    fmt.Println(strings.Title("我是中國人"))
}

運行結果:


22、ToTitle

func ToTitle(s string)string將字符串轉為大寫字母。

package main
import "fmt"
import "strings"
func main() {
    fmt.Println(strings.ToTitle("loud noises"))
    fmt.Println(strings.ToTitle("loud 中國"))
}

運行結果:


23、ToLower

func ToLower(s string)string將字符串轉為小寫字母。

package main
import "fmt"
import "strings"
func main() {
 fmt.Println(strings.ToLower("CHain")) //chain
}

運行結果:


24、ToUpper

func ToUpper(s string)string將字符串轉為大寫字母。

package main
import "fmt"
import "strings"
func main() {
    fmt.Println(strings.ToUpper("Chain"))
}

運行結果:


25、Trim

func Trim(s, cutset string)string去除字符串中首尾指定的字符。

package main
import "fmt"
import "strings"
func main() {
    fmt.Println( strings.Trim("!!!Chain!!!", "!"))
}

運行結果:


26、TrimLeft

func TrimLeft(s, cutset string)string去除字符串中左側指定的字符。

package main
import "fmt"
import "strings"
func main() {
    fmt.Println( strings.TrimLeft("!!!Chain!!!", "!"))
}

運行結果:


27、TrimSpace

func TrimSpace(s stirng)string去除字符串中首尾的空白部分。

package main
import "fmt"
import "strings"
func main() {
    fmt.Println( strings.TrimSpace("\t\n a lone gopher \n\t\r\n"))
}

運行結果:


轉載請注明出處:Golang 學習筆記(03)—— 字符串操作

目錄
上一節(jié):Golang 學習筆記(2)—— 函數(shù)
下一節(jié):Golang 學習筆記(04)—— array, slice, map

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 本文轉自:http://www.cnblogs.com/lidabo/p/5225868.html 1)字符串操作...
    XiaohuiLI閱讀 9,684評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,662評論 18 399
  • 一、字符串操作 strcpy(p, p1) 復制字符串 strncpy(p, p1, n) 復制指定長度字符串 s...
    JaiUnChat閱讀 1,750評論 0 7
  • 生活,是活靈活現(xiàn),而法律,則是嚴肅強制的。 生活更多是受到人情世故左右,許多人一輩子生活中也許都不會感受到法律的介...
    c36c38f7dffb閱讀 596評論 0 1
  • 制作靜態(tài)庫 動態(tài)庫:.dylib .framework 靜態(tài)庫:.a .framework 兩者區(qū)別*:動態(tài)庫時在...
    海青閱讀 1,940評論 0 1

友情鏈接更多精彩內容