[Go] Golang 常用字符串处理方法汇总 →→→→→进入此内容的聊天室

来自 , 2020-11-12, 写在 Go, 查看 141 次.
URL http://www.code666.cn/view/02052c0f
  1. package main
  2.  
  3. import (
  4.         "fmt"
  5.         "strings"
  6.         //"unicode/utf8"
  7. )
  8.  
  9. func main() {
  10.         fmt.Println("查找子串是否在指定的字符串中")
  11.         fmt.Println(" Contains 函数的用法")
  12.         fmt.Println(strings.Contains("seafood", "foo")) //true
  13.         fmt.Println(strings.Contains("seafood", "bar")) //false
  14.         fmt.Println(strings.Contains("seafood", ""))    //true
  15.         fmt.Println(strings.Contains("", ""))           //true 这里要特别注意
  16.         fmt.Println(strings.Contains("我是中国人", "我"))     //true
  17.  
  18.         fmt.Println("")
  19.         fmt.Println(" ContainsAny 函数的用法")
  20.         fmt.Println(strings.ContainsAny("team", "i"))        // false
  21.         fmt.Println(strings.ContainsAny("failure", "u & i")) // true
  22.         fmt.Println(strings.ContainsAny("foo", ""))          // false
  23.         fmt.Println(strings.ContainsAny("", ""))             // false
  24.  
  25.         fmt.Println("")
  26.         fmt.Println(" ContainsRune 函数的用法")
  27.         fmt.Println(strings.ContainsRune("我是中国", '我')) // true 注意第二个参数,用的是字符
  28.  
  29.         fmt.Println("")
  30.         fmt.Println(" Count 函数的用法")
  31.         fmt.Println(strings.Count("cheese", "e")) // 3
  32.         fmt.Println(strings.Count("five", ""))    // before & after each rune result: 5 , 源码中有实现
  33.  
  34.         fmt.Println("")
  35.         fmt.Println(" EqualFold 函数的用法")
  36.         fmt.Println(strings.EqualFold("Go", "go")) //大小写忽略
  37.  
  38.         fmt.Println("")
  39.         fmt.Println(" Fields 函数的用法")
  40.         fmt.Println("Fields are: %q", strings.Fields("  foo bar  baz   ")) //["foo" "bar" "baz"] 返回一个列表
  41.  
  42.         //相当于用函数做为参数,支持匿名函数
  43.         for _, record := range []string{" aaa*1892*122", "aaa\taa\t", "124|939|22"} {
  44.                 fmt.Println(strings.FieldsFunc(record, func(ch rune) bool {
  45.                         switch {
  46.                         case ch > '5':
  47.                                 return true
  48.                         }
  49.                         return false
  50.                 }))
  51.         }
  52.  
  53.         fmt.Println("")
  54.         fmt.Println(" HasPrefix 函数的用法")
  55.         fmt.Println(strings.HasPrefix("NLT_abc", "NLT")) //前缀是以NLT开头的
  56.  
  57.         fmt.Println("")
  58.         fmt.Println(" HasSuffix 函数的用法")
  59.         fmt.Println(strings.HasSuffix("NLT_abc", "abc")) //后缀是以NLT开头的
  60.  
  61.         fmt.Println("")
  62.         fmt.Println(" Index 函数的用法")
  63.         fmt.Println(strings.Index("NLT_abc", "abc")) // 返回第一个匹配字符的位置,这里是4
  64.         fmt.Println(strings.Index("NLT_abc", "aaa")) // 在存在返回 -1
  65.         fmt.Println(strings.Index("我是中国人", "中"))     // 在存在返回 6
  66.  
  67.         fmt.Println("")
  68.         fmt.Println(" IndexAny 函数的用法")
  69.         fmt.Println(strings.IndexAny("我是中国人", "中")) // 在存在返回 6
  70.         fmt.Println(strings.IndexAny("我是中国人", "和")) // 在存在返回 -1
  71.  
  72.         fmt.Println("")
  73.         fmt.Println(" Index 函数的用法")
  74.         fmt.Println(strings.IndexRune("NLT_abc", 'b')) // 返回第一个匹配字符的位置,这里是4
  75.         fmt.Println(strings.IndexRune("NLT_abc", 's')) // 在存在返回 -1
  76.         fmt.Println(strings.IndexRune("我是中国人", '中'))   // 在存在返回 6
  77.  
  78.         fmt.Println("")
  79.         fmt.Println(" Join 函数的用法")
  80.         s := []string{"foo", "bar", "baz"}
  81.         fmt.Println(strings.Join(s, ", ")) // 返回字符串:foo, bar, baz
  82.  
  83.         fmt.Println("")
  84.         fmt.Println(" LastIndex 函数的用法")
  85.         fmt.Println(strings.LastIndex("go gopher", "go")) // 3
  86.  
  87.         fmt.Println("")
  88.         fmt.Println(" LastIndexAny 函数的用法")
  89.         fmt.Println(strings.LastIndexAny("go gopher", "go")) // 4
  90.         fmt.Println(strings.LastIndexAny("我是中国人", "中"))      // 6
  91.  
  92.         fmt.Println("")
  93.         fmt.Println(" Map 函数的用法")
  94.         rot13 := func(r rune) rune {
  95.                 switch {
  96.                 case r >= 'A' && r <= 'Z':
  97.                         return 'A' + (r-'A'+13)%26
  98.                 case r >= 'a' && r <= 'z':
  99.                         return 'a' + (r-'a'+13)%26
  100.                 }
  101.                 return r
  102.         }
  103.         fmt.Println(strings.Map(rot13, "'Twas brillig and the slithy gopher..."))
  104.  
  105.         fmt.Println("")
  106.         fmt.Println(" Repeat 函数的用法")
  107.         fmt.Println("ba" + strings.Repeat("na", 2)) //banana
  108.  
  109.         fmt.Println("")
  110.         fmt.Println(" Replace 函数的用法")
  111.         fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))
  112.         fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1))
  113.  
  114.         fmt.Println("")
  115.         fmt.Println(" Split 函数的用法")
  116.         fmt.Printf("%q\n", strings.Split("a,b,c", ","))
  117.         fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a "))
  118.         fmt.Printf("%q\n", strings.Split(" xyz ", ""))
  119.         fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))
  120.  
  121.         fmt.Println("")
  122.         fmt.Println(" SplitAfter 函数的用法")
  123.         fmt.Printf("%q\n", strings.SplitAfter("/home/m_ta/src", "/")) //["/" "home/" "m_ta/" "src"]
  124.  
  125.         fmt.Println("")
  126.         fmt.Println(" SplitAfterN 函数的用法")
  127.         fmt.Printf("%q\n", strings.SplitAfterN("/home/m_ta/src", "/", 2))  //["/" "home/m_ta/src"]
  128.         fmt.Printf("%q\n", strings.SplitAfterN("#home#m_ta#src", "#", -1)) //["/" "home/" "m_ta/" "src"]
  129.  
  130.         fmt.Println("")
  131.         fmt.Println(" SplitN 函数的用法")
  132.         fmt.Printf("%q\n", strings.SplitN("/home/m_ta/src", "/", 1))
  133.  
  134.         fmt.Printf("%q\n", strings.SplitN("/home/m_ta/src", "/", 2))  //["/" "home/" "m_ta/" "src"]
  135.         fmt.Printf("%q\n", strings.SplitN("/home/m_ta/src", "/", -1)) //["" "home" "m_ta" "src"]
  136.         fmt.Printf("%q\n", strings.SplitN("home,m_ta,src", ",", 2))   //["/" "home/" "m_ta/" "src"]
  137.  
  138.         fmt.Printf("%q\n", strings.SplitN("#home#m_ta#src", "#", -1)) //["/" "home/" "m_ta/" "src"]
  139.  
  140.         fmt.Println("")
  141.         fmt.Println(" Title 函数的用法") //这个函数,还真不知道有什么用
  142.         fmt.Println(strings.Title("her royal highness"))
  143.  
  144.         fmt.Println("")
  145.         fmt.Println(" ToLower 函数的用法")
  146.         fmt.Println(strings.ToLower("Gopher")) //gopher
  147.  
  148.         fmt.Println("")
  149.         fmt.Println(" ToLowerSpecial 函数的用法")
  150.  
  151.         fmt.Println("")
  152.         fmt.Println(" ToTitle 函数的用法")
  153.         fmt.Println(strings.ToTitle("loud noises"))
  154.         fmt.Println(strings.ToTitle("loud 中国"))
  155.  
  156.         fmt.Println("")
  157.         fmt.Println(" Replace 函数的用法")
  158.         fmt.Println(strings.Replace("ABAACEDF", "A", "a", 2)) // aBaACEDF
  159.         //第四个参数小于0,表示所有的都替换, 可以看下golang的文档
  160.         fmt.Println(strings.Replace("ABAACEDF", "A", "a", -1)) // aBaaCEDF
  161.  
  162.         fmt.Println("")
  163.         fmt.Println(" ToUpper 函数的用法")
  164.         fmt.Println(strings.ToUpper("Gopher")) //GOPHER
  165.  
  166.         fmt.Println("")
  167.         fmt.Println(" Trim  函数的用法")
  168.         fmt.Printf("[%q]", strings.Trim(" !!! Achtung !!! ", "! ")) // ["Achtung"]
  169.  
  170.         fmt.Println("")
  171.         fmt.Println(" TrimLeft 函数的用法")
  172.         fmt.Printf("[%q]", strings.TrimLeft(" !!! Achtung !!! ", "! ")) // ["Achtung !!! "]
  173.  
  174.         fmt.Println("")
  175.         fmt.Println(" TrimSpace 函数的用法")
  176.         fmt.Println(strings.TrimSpace(" \t\n a lone gopher \n\t\r\n")) // a lone gopher
  177.  
  178. }
  179.  
  180. //go/7304

回复 "Golang 常用字符串处理方法汇总"

这儿你可以回复上面这条便签

captcha