golang substring方法的幾種實現

2021-07-15 11:09:49 字數 1578 閱讀 8043

原生方法,直接使用slice切片實現,但此方法對於包括中文字元就擷取錯誤

s:="abcde"

fmt.println(s[0:2]);

//輸出

//ab

//包含中文的字串

s2 := "我是中國人"

fmt.println(s2[0:2])

//輸出

// ��

//有亂碼呀

第二種方法呢,自己實現,如下是我實現的幾種方法,最主要還是通過rune來實現的

//獲取source的子串,如果start小於0或者end大於source長度則返回""

//start:開始index,從0開始,包括0

//end:結束index,以end結束,但不包括end

func substring(source string, start int, end int) string

if start == 0 && end == length

return string(r[start : end])

}

第二種方法呢,自己實現,如下是我實現的幾種方法,最主要還是通過rune來實現的

//獲取source的子串,如果start小於0或者end大於source長度則返回""

//start:開始index,從0開始,包括0

//end:結束index,以end結束,但不包括end

func substring(source string, start int, end int) string

if start == 0 && end == length

if start == end

var substring = ""

for i := 0; i < length; i++

if i >= end

substring += string(r[i])

} return substring

}

//方法二:

func substring(source string, start int, end int) string 

if pos >= end

pos++

substring += string(c)

} return substring

}

//方法三

func substring(source string, start int, end int) string 

if start == 0 && end == length

var substring = ""

for i := start; i < length; i++

return substring

}s := "1人民幣哈哈只"

fmt.printf("%s\n", substring(s, 1, 7))

//輸出

//人民幣哈哈只

golang substring方法的幾種實現

s abcde fmt.println s 0 2 輸出 ab 包含中文的字串 s2 我是中國人 fmt.println s2 0 2 輸出 有亂碼呀 獲取source的子串,如果start小於0或者end大於source長度則返回 start 開始index,從0開始,包括0 end 結束inde...

jacobi,seidel,sor方法的c 實現

沒有進行收斂性判斷,只是演算法的單純求解 include include include using namespace std const int n 4 檔案的行列數 陣列求max double max array double err n return max 分離矩陣確定d void arr...

設計模式之(Singleton)模式的幾種實現

這種實現方法,優點是實現簡單,缺點是在多執行緒頻繁訪問下效率比較低,經常出現鎖競爭。適應於不需要頻繁訪問例項的情況下。class singleton private singleton singleton const singleton singleton operator const single...