持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
一、字符串中常用的函数:
说明:字符串在我们程序开发中,使用的是非常多的,常用的函数需要同学们掌握。
- 统计字符串的长度,按字节
len(str)
package main
import "fmt"
func main() {
// 统计字符串的长度,按字节 len(str)
str := "hello"
fmt.Println("str len=", len(str))
// golang的编码统一为 utf - 8 (ASCII的字符(字母和数字)占一个字节,汉字占3个字节)
str1 := "hello北"
fmt.Println("str1 len=", len(str1))
}
- 字符串遍历,同时处理有中文的问题:
r:=[]rune(str)
package main
import "fmt"
func main() {
// // 统计字符串的长度,按字节 len(str)
// str := "hello"
// fmt.Println("str len=", len(str))
// // golang的编码统一为 utf - 8 (ASCII的字符(字母和数字)占一个字节,汉字占3个字节)
// str1 := "hello北"
// fmt.Println("str1 len=", len(str1))
// 遍历字符串每一个字符
str2 := "hello北京"
// 字符串变阿玲,同时处理有中文问题 r:=[]rune(str)
r := []rune(str2)
for i := 0; i < len(str2); i++ {
fmt.Printf("字符=%c\n", r[i])
}
}
- 字符串转整数:
n,err := strconv.Atoi("123")
package main
import (
"fmt"
"strconv"
)
func main() {
// 字符串转整数:
n, err := strconv.Atoi("123")
if err != nil {
fmt.Println("转换错误", err)
} else {
fmt.Println("转换结果是", n)
}
}
nil:就是空,相当于其他语言里面的NULL或者NONE
- 整数转字符串
str = strconv.ltoa(12345)
package main
import (
"fmt"
"strconv"
)
func main() {
str := "hello"
// 整数转字符串 str = strconv.ltoa(12345)
str = strconv.Itoa(12345)
fmt.Printf("str=%v,str=%T", str, str)
}
- 字符串转
[]byte:var byte = []byte("hello go")
package main
import (
"fmt"
)
func main() {
// 字符串转[]byte:var byte = []byte("hello go")
var bytes = []byte("hello go")
fmt.Printf("byte=%v\n", bytes) // 这里输出的是字母对应的 ascll 编码
}
[]byte转字符串:str = string([]byte(91.98.99))
package main
import (
"fmt"
)
func main() {
str := "hello"
// []byte 转字符串:str = string([]byte(91.98.99))
str = string([]byte{97, 98, 99})
fmt.Printf("str= %v\n", str)
}
- 10 进制转 2,8,16进制:
str = strconv.Formatlnt(123,2) // 2-->8,16
package main
import (
"fmt"
"strconv"
)
func main() {
str := "hello"
// 10 进制转 2,8,16进制:str = strconv.Formatlnt(123,2) // 2-->8,16 ,返回对应的字符串
str = strconv.FormatInt(123, 2)
fmt.Printf("123对应的二进制是=%v\n", str)
str = strconv.FormatInt(123, 8)
fmt.Printf("123对应的二进制是=%v\n", str)
str = strconv.FormatInt(123, 16)
fmt.Printf("123对应的二进制是=%v\n", str)
}
- 查找子串是否在指定的字符串中:
strings.Contains("seafood","foo") // true
package main
import (
"fmt"
"strings"
)
func main() {
// 查找子串是否在指定的字符串中:strings.Contains("seafood","foo") // true
b := strings.Contains("seafood", "foo")
fmt.Printf("b=%v\n", b)
f := strings.Contains("seafood", "marry")
fmt.Printf("b=%v\n", f)
}
- 统计一个字符串由几个指定的字串:
strings.Count("ceheese","e") //4
package main
import (
"fmt"
"strings"
)
func main() {
// 统计一个字符串由几个指定的字串:strings.Count("ceheese","e") //4
num := strings.Count("ceheese", "e")
fmt.Printf("num=%v\n", num)
num1 := strings.Count("ceheese", "se")
fmt.Printf("num=%v\n", num1)
}
- 不区分大小写的字符串比较(==是区分字母大小写的)
: fmt.Println(strings.EqualFold("abc","Abc")) // true
package main
import (
"fmt"
"strings"
)
func main() {
b := strings.Contains("seafood", "foo")
// 不区分大小写的字符串比较(==是区分字母大小写的): fmt.Println(strings.EqualFold("abc","Abc")) // true
b = strings.EqualFold("abc", "Abc")
fmt.Printf("b=%v\n", b)
fmt.Println("结果", "abc" == "Abc")
}
- 返回子串在字符串第一次出现的 index 值,如果没有返回
-1 :string.Index("NLT_abc","abc") //4
package main
import (
"fmt"
"strings"
)
func main() {
// 返回子串在字符串第一次出现的 index 值,如果没有返回 -1 :string.Index("NLT_abc","abc") //4
index := strings.Index("NLT_abc", "abc")
fmt.Printf("index= %v\n", index)
}
- 返回子串的在字符串最后一次出现的 index ,如果没有返回-1 :
strings.LastIndex("go golang", "go")
package main
import (
"fmt"
"strings"
)
func main() {
// 12. 返回子串的在字符串最后一次出现的 index ,如果没有返回-1 :strings.LastIndex("go golang", "go")
index := strings.LastIndex("go golang", "go")
fmt.Printf("index = %v\n", index)
}
- 将指定的子串替换成另外一个子串:
package main
import (
"fmt"
"strings"
)
func main() {
// 13. 将指定的子串替换成另外一个子串:
str := strings.Replace("go go hello", "go", "北京", 1)
fmt.Printf("str= %v\n", str)
str1 := "go go hello"
str2 := strings.Replace(str1, "go", "北京", -1)
fmt.Printf("str2= %v\n", str2)
}
- 按照指定的某个字符,为分隔标识,将一个字符串拆分成字符串数组。
package main
import (
"fmt"
"strings"
)
func main() {
// 按照指定的某个字符,为分隔标识,将一个字符串拆分成字符串数组。
strArr := strings.Split("hello,wrold,ok", ",")
fmt.Printf("steArr= %v\n", strArr)
}
package main
import (
"fmt"
"strings"
)
func main() {
// 按照指定的某个字符,为分隔标识,将一个字符串拆分成字符串数组。
strArr := strings.Split("hello,wrold,ok", ",")
for i := 0; i < len(strArr); i++ {
fmt.Printf("str[%v] = %v\n", i, strArr[i])
}
fmt.Printf("steArr= %v\n", strArr)
}
- 将字符串的字母进行大小写转换:
package main
import (
"fmt"
"strings"
)
func main() {
// 将字符串的字母进行大小写转换:
str := "goLang Hello"
// 全部小写
str = strings.ToLower(str)
fmt.Printf("str = %v\n", str)
// 全部大写
str = strings.ToUpper(str)
fmt.Printf("str = %v\n", str)
}
- 将字符串左右两边的空格去掉:
package main
import (
"fmt"
"strings"
)
func main() {
// 将字符串左右两边的空格去掉:
str := strings.TrimSpace(" to a lone gopher ntrn ")
fmt.Printf("str=%v\n", str)
}
- 将字符串左右两边指定的字符去掉:
package main
import (
"fmt"
"strings"
)
func main() {
// 将字符串左右两边指定的字符去掉:! 和空格
str := strings.Trim("! hello! ", " !")
fmt.Printf("str=%v\n", str)
}
- 将字符串左边指定的字符去掉:
package main
import (
"fmt"
"strings"
)
func main() {
// 将字符串左边指定的字符去掉:
str := strings.TrimLeft("!hello!", "!")
fmt.Printf("str=%v\n", str)
// 将字符串右边指定的字符去掉:
str1 := strings.TrimRight("!hello!", "!")
fmt.Printf("str=%v\n", str1)
}
- 将字符串右边指定的字符去掉:
package main
import (
"fmt"
"strings"
)
func main() {
// 将字符串左边指定的字符去掉:
str := strings.TrimLeft("!hello!", "!")
fmt.Printf("str=%v\n", str)
// 将字符串右边指定的字符去掉:
str1 := strings.TrimRight("!hello!", "!")
fmt.Printf("str=%v\n", str1)
}
- 判断字符串是否以指定的字符串开头:
package main
import (
"fmt"
"strings"
)
func main() {
// 判断字符串是否以指定的字符串开头:
b := strings.HasPrefix("ftp://192.168.110.110", "ftp")
fmt.Printf("b = %v\n", b)
}
- 判断字符串是否以指定的字符串结束:
package main
import (
"fmt"
"strings"
)
func main() {
// 判断字符串是否以指定的字符串结束:
b := strings.HasSuffix("192.168.110.110.ftp", "ftp")
fmt.Printf("b = %v\n", b)
c := strings.HasSuffix("192.168.110.110.123", "ftp")
fmt.Printf("c = %v\n", c)
}