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

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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

1、Contains

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

package mainimport "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 mainimport "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 mainimport "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 mainimport "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 這個函數是尋找字串,然後返回當前的位置,輸入的都是string類型,然後int的位置資訊。

package mainimport "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開始計數的

6、IndexAny

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

package mainimport "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,這個函數功能還是尋找第一次粗線的位置,只不過這次C是byte類型的,尋找到返回位置,找不到返回-1。

package mainimport "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 mainimport "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這個函數大家一看就知道了,是通過類型的轉換來用函數尋找位置,我們來代碼看下哈。

package mainimport "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 看到這個大家可能也明白了尋找的是最後出現的位置,正好跟index相反。

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

運行結果:



11、LastIndexAny

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

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

運行結果:



12、EqualFold

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

package mainimport "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將字串數組按照指定的分隔字元拼接成字串。

package mainimport "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 mainimport "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,改方法返回一個新的重複指定次數的字串。

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

運行結果:



16、Replace

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

package mainimport "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將字串按照指定的字串分割生一個字串數組。

package mainimport "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將字串按照指定的字串分割生一個指定元素數量的字串數組。該方法返回的數組將不保留分隔字元。count參數為-1時效果如Split

package mainimport "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將字串按照指定的字串分割生一個字串數組。該方法返回的數組將保留分隔字元,且至於每個元素的末端。

package mainimport "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將字串按照指定的字串分割生一個指定元素數量的字串數組。該方法返回的數組將保留分隔字元,且至於每個元素的末端。count參數為-1時效果如SplitAfter

package mainimport "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 mainimport "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 mainimport "fmt"import "strings"func main() {    fmt.Println(strings.ToTitle("loud noises"))    fmt.Println(strings.ToTitle("loud 中國"))}

運行結果:



23、ToLower

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

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

運行結果:



24、ToUpper

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

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

運行結果:



25、Trim

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

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

運行結果:



26、TrimLeft

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

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

運行結果:



27、TrimSpace

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

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

運行結果:



本文為原創,轉載請註明出處

上一節:Golang 學習筆記(2)—— 函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.