golang strings包

001 package main
002  
003 import (
004     "fmt"
005     "strings"
006     //"unicode/utf8"
007 )
008  
009 func main() {
010     fmt.Println("查找子串是否在指定的字符串中")
011     fmt.Println(" Contains 函數的用法")
012     fmt.Println(strings.Contains("seafood", "foo")) //true
013     fmt.Println(strings.Contains("seafood", "bar")) //false
014     fmt.Println(strings.Contains("seafood", ""))    //true
015     fmt.Println(strings.Contains("", ""))           //true 這裏要特別注意
016     fmt.Println(strings.Contains("我是中國人", "我"))     //true
017  
018     fmt.Println("")
019     fmt.Println(" ContainsAny 函數的用法")
020     fmt.Println(strings.ContainsAny("team", "i"))        // false
021     fmt.Println(strings.ContainsAny("failure", "u & i")) // true
022     fmt.Println(strings.ContainsAny("foo", ""))          // false
023     fmt.Println(strings.ContainsAny("", ""))             // false
024  
025     fmt.Println("")
026     fmt.Println(" ContainsRune 函數的用法")
027     fmt.Println(strings.ContainsRune("我是中國", '我')) // true 注意第二個參數,用的是字符
028  
029     fmt.Println("")
030     fmt.Println(" Count 函數的用法")
031     fmt.Println(strings.Count("cheese", "e")) // 3
032     fmt.Println(strings.Count("five", ""))    // before & after each rune result: 5 , 源碼中有實現
033  
034     fmt.Println("")
035     fmt.Println(" EqualFold 函數的用法")
036     fmt.Println(strings.EqualFold("Go", "go")) //大小寫忽略
037  
038     fmt.Println("")
039     fmt.Println(" Fields 函數的用法")
040     fmt.Println("Fields are: %q", strings.Fields("  foo bar  baz   ")) //["foo" "bar" "baz"] 返回一個列表
041  
042     //相當於用函數做爲參數,支持匿名函數
043     for _, record := range []string{" aaa*1892*122", "aaa\taa\t", "124|939|22"} {
044         fmt.Println(strings.FieldsFunc(record, func(ch rune) bool {
045             switch {
046             case ch > '5':
047                 return true
048             }
049             return false
050         }))
051     }
052  
053     fmt.Println("")
054     fmt.Println(" HasPrefix 函數的用法")
055     fmt.Println(strings.HasPrefix("NLT_abc", "NLT")) //前綴是以NLT開頭的
056  
057     fmt.Println("")
058     fmt.Println(" HasSuffix 函數的用法")
059     fmt.Println(strings.HasSuffix("NLT_abc", "abc")) //後綴是以NLT開頭的
060  
061     fmt.Println("")
062     fmt.Println(" Index 函數的用法")
063     fmt.Println(strings.Index("NLT_abc", "abc")) // 返回第一個匹配字符的位置,這裏是4
064     fmt.Println(strings.Index("NLT_abc", "aaa")) // 在存在返回 -1
065     fmt.Println(strings.Index("我是中國人", "中"))     // 在存在返回 6
066  
067     fmt.Println("")
068     fmt.Println(" IndexAny 函數的用法")
069     fmt.Println(strings.IndexAny("我是中國人", "中")) // 在存在返回 6
070     fmt.Println(strings.IndexAny("我是中國人", "和")) // 在存在返回 -1
071  
072     fmt.Println("")
073     fmt.Println(" Index 函數的用法")
074     fmt.Println(strings.IndexRune("NLT_abc", 'b')) // 返回第一個匹配字符的位置,這裏是4
075     fmt.Println(strings.IndexRune("NLT_abc", 's')) // 在存在返回 -1
076     fmt.Println(strings.IndexRune("我是中國人", '中'))   // 在存在返回 6
077  
078     fmt.Println("")
079     fmt.Println(" Join 函數的用法")
080     s := []string{"foo", "bar", "baz"}
081     fmt.Println(strings.Join(s, ", ")) // 返回字符串:foo, bar, baz
082  
083     fmt.Println("")
084     fmt.Println(" LastIndex 函數的用法")
085     fmt.Println(strings.LastIndex("go gopher", "go")) // 3
086  
087     fmt.Println("")
088     fmt.Println(" LastIndexAny 函數的用法")
089     fmt.Println(strings.LastIndexAny("go gopher", "go")) // 4
090     fmt.Println(strings.LastIndexAny("我是中國人", "中"))      // 6
091  
092     fmt.Println("")
093     fmt.Println(" Map 函數的用法")
094     rot13 := func(r rune) rune {
095         switch {
096         case r >= 'A' && r <= 'Z':
097             return 'A' + (r-'A'+13)%26
098         case r >= 'a' && r <= 'z':
099             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 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章