1.Strings
strings 包提供操作 UTF-8 字符串常用函数和结构体
a) 常用函数
⚫ Compare:比较字符串
⚫ Contains:是否包含子字符串
⚫ Count:子字符串出现次数
⚫ EqualFold:不区分大小写比较
⚫ Fields:按空白字符分割字符串
⚫ HasPrefix:是否以字符串作为前缀
⚫ HasSuffix:是否以字符串作为后缀
⚫ Index:获取子字符串首次出现的位置
⚫ Split:分割字符串为切片
⚫ SplitN:分割字符串为 N 个元素的切片,N<0 对整个字符串进行分割
⚫ Join:将字符串切片连接
⚫ LastIndex:获取子字符串最后一次出现的位置
⚫ Map:对字符串中每个字符调用转换函数生成新的字符串
⚫ Repeat:将字符串重复 N 次连接
⚫ Replace:替换前 N 个出现的字符串,N<0 替换全部
⚫ ReplaceAll:替换所有出现的字符串
⚫ Title:单词首字母大写
⚫ ToLower: 所有字符转为小写
⚫ ToUpper:所有字符转为大写
⚫ Trim:去除字符串前后字符
⚫ TrimSpace:去除字符串前后空格
⚫ TrimLeft:去除字符串前字符
⚫ TrimRight: 去除字符串后字符
⚫ TrimPrefix:去除字符串前缀字符串
⚫ TrimSuffix:去除字符串后缀字符串
b) 常用结构体
⚫ Builder
字符串是基本值类型,不可修改。Go 语言提供 Builder 结构体可以高效的实现符串
的拼接,实现了 io.Writer 接口,可以当作流来写入
常用方法:
➢ Write:将字节切片写入到 builder 对象
➢ WriteByte:将字节切片写入到 builder 对象
➢ WriteRune:将 rune 写入到 builder 对象
➢ WriteString:将字符串写入到 builder 对象
➢ String:将 builder 转化为 string
➢ Reset:清空内容
⚫ Reader
Go 语言提供 Reader 结构体,可以将字符串转化为 Reader 对象,当作流来读取
常用函数:
➢ NewReader:根据字符串创建 reader 对象指针
常用方法
➢ Read:读取字符串并写入到参数切片
➢ WriteTo:将 reader 对象中字符串写入到输出流中
➢ Reset:更新 reader 对象字符串内容
➢ Seek:设置 reader 对象处理位置
package main
import (
"bufio"
"fmt"
"strings"
)
//os.openfile 是针对disk 也就是磁盘
//strings.builder and strings.writer 是针对内存
//bufio是做了一层缓存 也就是封装
func main() {
reader := strings.NewReader("aaaaaaaaa\naaabbbbb")
//bytes := make([]byte,3)
//for {
// //常用于 接受一个流不想保存在本地文件,可以直接操作
// //bufio一般用于持久化文件的缓存 对于内存中的缓存没啥意义
// n,err := reader.Read(bytes)
// if err != nil {
// if err != io.EOF{
// fmt.Println(err)
// }
// break
// }else {
// fmt.Println(string(bytes[:n]))
// }
//}
scanner := bufio.NewScanner(reader)
for scanner.Scan(){
fmt.Println(scanner.Text())
}
//builder 可以做字符串的拼接 多次添加可以用这种方式
//可以提升字符串的操作速度
//平常做字符串拼接每次都需要重新申请内存空间 然后经过计算作拼接
//builder的话是存在内存中 一次转换string
var builder strings.Builder
builder.Write([]byte("aaabb"))
builder.WriteString("cccc")
fmt.Println(builder.String())
}
2.Bytes
bytes 包提供了操作 byte[](字节切片)常用函数
a) 类型转换
可以将 string 通过函数 byte[]转化为字节切片,同时也可通过 string 函数将子接切片转
化为 string
b) 常用函数:见 strings 包
c) 常用结构体
⚫ Buffer
Go 语言提供了可变大小的字节缓冲区 Buffer,实现了 io.Reader 和 io.Writer 接口,
可以当作流来写入和读取
常用函数:
➢ NewBuffer:使用字节切片创建 Buffer 对象
➢ NewBufferString:使用字符串创建 buffer 对象
常用方法:
➢ Bytes:将 buffer 对象转化为字节切片
➢ String:将 buffer 对象转化为字符串
➢ Read:读取字符串并放入到切片中
➢ ReadFrom:从流中读入
➢ ReadString:读取字符串,碰到分隔符位置
➢ ReadBytes:读取字符切片,碰到分隔符位置
➢ Write:将字节切片写入到 buffer
➢ WriteByte:将字节切片写入到 buffer 对象
➢ WriteRune:将 rune 写入到 buffer 对象
➢ WriteString:将字符串写入到 buffer 对象
➢ WriteTo:将 buffer 对象中字符串写入到输出流中
➢ Reset: 清空内容
⚫ Reader
Go 语言提供 Reader 结构体,可以将字节切片转化为 Reader 对象,当作流来读取
常用函数:
➢ NewReader:根据字符串创建 reader 对象指针
常用方法:
➢ Read:读取字节切片并写入到参数切片中
➢ WriteTo:将 reader 对象中字符串写入到输出流中
➢ Reset:更新 reader 对象字节切片内容
➢ Seek:设置 reader 对象处理位置
package main
import (
"bytes"
"fmt"
)
func main() {
buffer := bytes.NewBufferString("cc")
buffer.Write([]byte("aaa"))
buffer.WriteString("!cc")
fmt.Println(buffer)
bytes := make([]byte,2)
buffer.Read(bytes)
//这里表示读buffer一次2个字节
fmt.Println(string(bytes))
line,_ := buffer.ReadString('!')
fmt.Println(line)
}