建设公司自己的网站首页,空间站做网站有什么,300网站建设,如何制作个人网页页一、golang的字符串长度
1. len()内置系统函数#xff0c;计算字符串结果是字符串的字节长度#xff0c;不是字符长度
//1.ASCII字符串长度#xff08;字节长度#xff09;
str1 : wo ai zhong guo
fmt.Println(len(str1)) //15//2.带中文的字符串长度计算字符串结果是字符串的字节长度不是字符长度
//1.ASCII字符串长度字节长度
str1 : wo ai zhong guo
fmt.Println(len(str1)) //15//2.带中文的字符串长度字节长度
str2 : 我爱中国
fmt.Println(len(str2)) //12 4 * 3字节 12字节
2. 计算带中文的字符串长度。 需要将字符串转为 rune类型int32 //带中文的字符串长度str1 : wo ai 中国r : []rune(str1)fmt.Println(len(r)) //8//也可以使用 utf8.RuneCountInString() 计算携带中文的字符串长度num : utf8.RuneCountInString(str1)fmt.Println(num) //8
3.为什么字符串带中文字符长度计算方式不一样
因为golang默认的字符编码是utf-8, 字符串的底层是 []byte类型英文及标点符号都是每个占1个字节中文占3个字节。 len() 函数实际上计算的是 字符串的字节长度。要计算中文长度那么就得转成rune 或者 通过 utf8.RuneCountInString(str) 来计算。 二、字符串分割成切片切片拼接成字符串 //字符串分割str1 : 刘备,关羽,张飞s : strings.Split(str1, ,)fmt.Println(s) //切片 [刘备 关羽 张飞]//切片拼接成字符串str2 : strings.Join(s, -)fmt.Println(str2) //字符串 刘备-关羽-张飞
三、字符串查找字符串中是否存在某些子串 //1.字符串中是否存在某些字符str : http://baidu.com/index/index.htmlb : strings.Contains(str, http://) //字符串中是否存在 http头fmt.Println(b) //true//2.某个子串 在字符串中有多少个count : strings.Count(str, index)fmt.Println(count) //2//3.字串在字符串中开始索引位置index : strings.Index(str, bai)fmt.Println(index) //7//4.字串在字符串中最后一次索引位置index strings.LastIndex(str, index)fmt.Println(index) //23
四、剔除字符串左右空格及左右指定字符 //1.字符串去左右空格str1 : 野蛮生长 fmt.Println(utf8.RuneCountInString(str1)) //字符长度6str : strings.TrimSpace(str1)fmt.Println(str)fmt.Println(utf8.RuneCountInString(str)) //字符长度4 去掉了左右空格//2.去掉左右指定字符str2 : -野蛮生长-str strings.Trim(str2, -)fmt.Println(str) //野蛮生长//3.去掉左侧指定字符str3 : -野蛮生长-str strings.TrimLeft(str3, -)fmt.Println(str) //野蛮生长-//4.去掉右侧指定字符str4 : -野蛮生长-str strings.TrimRight(str4, -)fmt.Println(str) //-野蛮生长
五、字符串中的某些字符替换 //1.字符串中某个字符替换掉str : 123 456 789 ?str1 : strings.Replace(str, , -, 1) //替换掉一个fmt.Println(str1) //123 - 456 789 ?str2 : strings.Replace(str, , -, 2) //替换掉两个fmt.Println(str2) //123 - 456 - 789 ?str3 : strings.ReplaceAll(str, , -) //替换掉所有fmt.Println(str3) //123 - 456 - 789 ?
六、数字字符串转数字intint转数字字符串 //1.数字字符串转intstr1 : 123789abnumber1, _ : strconv.Atoi(str1)fmt.Println(number1) //0str2 : 123789number2, _ : strconv.Atoi(str2)fmt.Println(number2) //123789//2.int转字符串number : 123456str : strconv.Itoa(number)fmt.Println(str) //123789fmt.Println(reflect.TypeOf(str)) //string