字符串属于在编程中是一种最常见用的数据类型,
在Go中也为字符串提供了很多常见的操作:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
var name string = "冯奎博客"
fmt.Println( len(name) ) // 获取 字节 长度,输出:12
fmt.Println( utf8.RuneCountInString(name) ) // 获取字符长度,输出:4
}
package main
import (
"fmt"
"strings"
)
func main() {
name := "冯奎博客"
result := strings.HasPrefix(name, "冯")
fmt.Println(result) // 输出:true
}
package main
import (
"fmt"
"strings"
)
func main() {
name := "冯奎博客"
result := strings.HasSuffix(name, "客")
fmt.Println(result) // 输出:true
}
package main
import (
"fmt"
"strings"
)
func main() {
name := "冯奎博客"
result := strings.Contains(name, "奎")
fmt.Println(result) // 输出:true
}
package main
import (
"fmt"
"strings"
)
func main() {
name := "fengkuiboke"
result := strings.ToUpper(name)
fmt.Println(result) // 输出:FENGKUIBOKE
}
// 注意:result是大写;name依然是小写。
package main
import (
"fmt"
"strings"
)
func main() {
name := "FENGKUIBOKE"
result := strings.ToLower(name)
fmt.Println(result) // 输出:fengkuiboke
}
package main
import (
"fmt"
"strings"
)
func main() {
name := "fengkuiboke"
result1 := strings.TrimRight(name, "ke") // 去除右边的ke
result2 := strings.TrimLeft(name, "f") // 去除左边的f
result3 := strings.Trim(name, "f") // 去除两边的f
fmt.Println(result1, result2, result3) // 输出:fengkuibo engkuiboke engkuiboke
}
package main
import (
"fmt"
"strings"
)
func main() {
name := "fengkuikuiboke"
result1 := strings.Replace(name, "kui", "IUK", 1) // 找到kui替换为IUK,从左到右找第一个替换
result2 := strings.Replace(name, "kui", "IUK", 2) // 找到kui替换为IUK,从左到右找前两个替换
result3 := strings.Replace(name, "kui", "IUK", -1) // 找到kui替换为IUK,替换所有
fmt.Println(result1, result2, result3)
package main
import (
"fmt"
"strings"
)
func main() {
name := "抬老子的意大利的炮来"
result := strings.Split(name, "的")
// 根据`的`进行切割,获取一个切片(类似于一个数组)
fmt.Println(result) // [ 抬老子, 意大利, 炮来 ]
}
可以使用 +
让两个字符串进行拼接,但这样的拼接效率会非常的低,不建议使用,建议大家使用以下的方式:
package main
import (
"bytes"
"fmt"
"strings"
)
func main() {
// 不建议
message := "冯奎" + "博客"
fmt.Println(message)
// 建议:效率高一些
dataList := []string{ "冯奎", "博客" }
result := strings.Join(dataList, "")
fmt.Println(result) // 冯奎博客
// 建议:效率更高一些(go 1.10之前)
var buffer bytes.Buffer
buffer.WriteString("冯奎")
buffer.WriteString("博客")
data := buffer.String()
fmt.Print(data)
// 建议:效率更更更更高一些(go 1.10之后)
var builder strings.Builder
builder.WriteString("冯奎")
builder.WriteString("博客")
value := builder.String()
fmt.Print(value)
}
package main
import (
"fmt"
"strconv"
)
func main() {
num := "666"
// 内部调用的就是 ParseInt
var data, _ = strconv.Atoi(num)
fmt.Println(data)
// 整型转字符串(strconv.ParseInt 和 strconv.FormatInt 可用处理进制转换)
// 十进制:整型; 其他进制:字符串形式
var result, err = strconv.ParseInt(num, 10, 32)
fmt.Println(result, err)
}
package main
import (
"fmt"
"strconv"
)
func main() {
var result = strconv.Itoa(888)
fmt.Println(result)
}
package main
import (
"fmt"
)
func main() {
var name string = "冯奎博客"
// 字符串转换为一个切片
byteSet := []byte(name)
fmt.Println(byteSet) // [229 134 175 229 165 142 229 141 154 229 174 162]
// 字节的集合转换为字符串
byteList := []byte{229, 134, 175, 229, 165, 142, 229, 141, 154, 229, 174, 162}
targetString := string(byteList)
fmt.Println(targetString)
}
package main
import (
"fmt"
"strconv"
// "unicode/utf8"
)
func main() {
var name string = "冯奎博客"
// 将字符串转换为 unicode字符集码点的集合 20911->冯 22862->奎 21338->博 23458->客
tempSet := []rune(name)
fmt.Println(tempSet) // [20911 22862 21338 23458]
fmt.Println(tempSet[0], strconv.FormatInt(int64(tempSet[0]), 16))
fmt.Println(tempSet[1], strconv.FormatInt(int64(tempSet[1]), 16))
fmt.Println(tempSet[2], strconv.FormatInt(int64(tempSet[2]), 16))
fmt.Println(tempSet[3], strconv.FormatInt(int64(tempSet[3]), 16))
// "rune集合" 转换 为字符串
runeList := []rune{20911, 22862, 21338, 23458}
targetName := string(runeList)
fmt.Println(targetName)
}
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
// 数字转字符串
v1 := string(65)
fmt.Println(v1) // A
v2 := string(20911)
fmt.Println(v2) // 冯
// 字符串转数字
v3, size := utf8.DecodeRuneInString("A")
fmt.Println(v3, size) // 65 1
v4, size := utf8.DecodeRuneInString("冯")
fmt.Println(v4, size) // 20911 3
}
本文为冯奎原创文章,转载无需和我联系,但请注明来自冯奎博客fengkui.net
最新评论