欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang中文字符串截取函數(shù)實(shí)現(xiàn)原理

 更新時(shí)間:2018年03月13日 17:08:44   投稿:wdc  
在golang中可以通過切片截取一個(gè)數(shù)組或字符串,但是當(dāng)截取的字符串是中文時(shí),可能會出現(xiàn)問題,下面我們來自定義個(gè)函數(shù)解決Golang中文字符串截取問題

在golang中可以通過切片截取一個(gè)數(shù)組或字符串,但是當(dāng)截取的字符串是中文時(shí),可能會出現(xiàn)的問題是:由于中文一個(gè)字不只是由一個(gè)字節(jié)組成,所以直接通過切片可能會把一個(gè)中文字的編碼截成兩半,結(jié)果導(dǎo)致最后一個(gè)字符是亂碼。

例如:

想要截取前四個(gè)字

name := "我是胡八一"
fmt.Println("name[:4] = ",name[:4])

執(zhí)行后得到的結(jié)果會是這樣的:

name[:4] = 我?

解決方法:
先將其轉(zhuǎn)為[]rune,再截取后,轉(zhuǎn)會string

nameRune := []rune(name)
fmt.Println("string(nameRune[:4]) = ",string(nameRune[:4]))

運(yùn)行結(jié)果:

string(nameRune[:4]) =  我是胡八

好了弄懂了原理我們來寫一個(gè)完整的Golang中文字符串截取函數(shù)

func SubString(str string, begin, length int) string {
  fmt.Println("Substring =", str)
  rs := []rune(str)
  lth := len(rs)
  fmt.Printf("begin=%d, end=%d, lth=%d\n", begin, length, lth)
  if begin < 0 {
    begin = 0
  }
  if begin >= lth {
    begin = lth
  }
  end := begin + length

  if end > lth {
    end = lth
  }
  fmt.Printf("begin=%d, end=%d, lth=%d\n", begin, length, lth)
  return string(rs[begin:end])
}

實(shí)現(xiàn)Golang中文字符串截取函數(shù)很簡單利用golang原理語句就可實(shí)現(xiàn)

相關(guān)文章

  • Go?Build編譯打包文件的完整步驟

    Go?Build編譯打包文件的完整步驟

    go build命令是用于編譯Go語言程序并生成可執(zhí)行文件,它可以將Go源代碼編譯成機(jī)器代碼,并將其打包成可執(zhí)行文件,方便在不同的操作系統(tǒng)上運(yùn)行,這篇文章主要給大家介紹了關(guān)于Go?Build編譯打包文件的完整步驟,需要的朋友可以參考下
    2024-02-02
  • golang的協(xié)程上下文的具體使用

    golang的協(xié)程上下文的具體使用

    golang的context?主要用來在?goroutine?之間傳遞上下文信息,包括:取消信號、超時(shí)時(shí)間、截止時(shí)間、k-v?等,本文就詳細(xì)的來介紹一下golang的協(xié)程上下文的具體使用,感興趣的可以了解一下
    2022-04-04
  • Golang基于文件魔數(shù)判斷文件類型的案例代碼

    Golang基于文件魔數(shù)判斷文件類型的案例代碼

    這篇文章主要介紹了Golang基于文件魔數(shù)判斷文件類型,本文介紹了基于文件魔數(shù)判斷文件類型的方法,主要涉及如何ReadSeek讀取文件指定字節(jié)內(nèi)容,然后介紹文件魔數(shù),最后給出示例基于魔數(shù)判斷文件類型,需要的朋友可以參考下
    2023-02-02
  • Go語言使用讀寫OPC詳解

    Go語言使用讀寫OPC詳解

    這篇文章主要介紹了Go語言使用讀寫OPC詳解,圖文講解的很清晰,有感興趣的同學(xué)可以學(xué)習(xí)下
    2021-03-03
  • 詳解Go語言如何進(jìn)行Http調(diào)用

    詳解Go語言如何進(jìn)行Http調(diào)用

    無論是微服務(wù)還是單體架構(gòu)等,服務(wù)間都有相互通信的時(shí)候,而最直接的通信方法就是 HTTP 調(diào)用,本文將會介紹在 Go 語言里,如何進(jìn)行 HTTP 調(diào)用,需要的可以參考一下
    2022-12-12
  • 解決Golang time.Parse和time.Format的時(shí)區(qū)問題

    解決Golang time.Parse和time.Format的時(shí)區(qū)問題

    這篇文章主要介紹了解決Golang time.Parse和time.Format的時(shí)區(qū)問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • golang編程入門之http請求天氣實(shí)例

    golang編程入門之http請求天氣實(shí)例

    這篇文章主要介紹了golang編程入門之http請求天氣實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Go實(shí)現(xiàn)MD5加密的三種方法小結(jié)

    Go實(shí)現(xiàn)MD5加密的三種方法小結(jié)

    本文主要介紹了Go實(shí)現(xiàn)MD5加密的三種方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Go語言單線程運(yùn)行也會有的并發(fā)問題解析

    Go語言單線程運(yùn)行也會有的并發(fā)問題解析

    這篇文章主要為大家介紹了Go語言單線程運(yùn)行的并發(fā)問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • RoaringBitmap原理及在Go中的使用詳解

    RoaringBitmap原理及在Go中的使用詳解

    這篇文章主要為大家介紹了RoaringBitmap原理及在Go中的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評論