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

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

Golang

1、Contains

func Contains(s, substr string) bool這個函數是查找某個字符是否在這個字符串中存在,存在返回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 這個函數是查找字符串膀曾,然后返回當前的位置,輸入的都是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開始計數的

6、IndexAny

func IndexAny(s, chars string) int這個函數是一樣的查找察迟,字符串第一次出現的位置斩狱,如果不存在就返回-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,這個函數功能還是查找第一次粗線的位置,只不過這次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這個函數大家一看就知道了,是通過類型的轉換來用函數查找位置遏考,我們來代碼看下哈慈鸠。

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 看到這個大家可能也明白了查找的是最后出現的位置灌具,正好跟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將字符串數組按照指定的分隔符拼接成字符串瘪松。

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,改方法返回一個新的重復指定次數的字符串壳嚎。

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返回一個新的字符串,參數s是原來的字符串烟馅,old是需要被替換掉的字符串说庭,new是要替代old的字符串,count是替換的次數郑趁,如果為-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將字符串按照指定的字符串分割生一個字符串數組捆憎。

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將字符串按照指定的字符串分割生一個指定元素數量的字符串數組。該方法返回的數組將不保留分隔符躲惰。count參數為-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將字符串按照指定的字符串分割生一個字符串數組础拨。該方法返回的數組將保留分隔符知举,且至于每個元素的末端。

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將字符串按照指定的字符串分割生一個指定元素數量的字符串數組雇锡。該方法返回的數組將保留分隔符,且至于每個元素的末端僚焦。count參數為-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)—— 函數
下一節(jié):Golang 學習筆記(04)—— array, slice, map

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末约素,一起剝皮案震驚了整個濱河市届良,隨后出現的幾起案子,更是在濱河造成了極大的恐慌圣猎,老刑警劉巖士葫,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異样漆,居然都是意外死亡为障,警方通過查閱死者的電腦和手機晦闰,發(fā)現死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門放祟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳍怨,“玉大人,你說我怎么就攤上這事跪妥⌒” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵眉撵,是天一觀的道長侦香。 經常有香客問我,道長纽疟,這世上最難降的妖魔是什么罐韩? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮污朽,結果婚禮上散吵,老公的妹妹穿的比我還像新娘。我一直安慰自己蟆肆,他們只是感情好矾睦,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著炎功,像睡著了一般枚冗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛇损,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天赁温,我揣著相機與錄音,去河邊找鬼。 笑死换棚,一個胖子當著我的面吹牛输钩,可吹牛的內容都是我干的。 我是一名探鬼主播毁涉,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锈死!你這毒婦竟也來了贫堰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤待牵,失蹤者是張志新(化名)和其女友劉穎其屏,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體缨该,經...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡偎行,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛤袒。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡熄云,死狀恐怖,靈堂內的尸體忽然破棺而出妙真,到底是詐尸還是另有隱情缴允,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布珍德,位于F島的核電站练般,受9級特大地震影響,放射性物質發(fā)生泄漏锈候。R本人自食惡果不足惜薄料,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泵琳。 院中可真熱鬧都办,春花似錦、人聲如沸虑稼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛛倦。三九已至歌懒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溯壶,已是汗流浹背及皂。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留且改,地道東北人验烧。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像又跛,于是被迫代替她去往敵國和親碍拆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容

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