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 | } |