码迷,mamicode.com
首页 > 其他好文 > 详细

Go strings 包

时间:2020-06-30 18:54:26      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:移动   hello   写入   sub   fun   ack   srp   抛出异常   ast   

package main

import (
    "fmt"
    "strings"
	"bytes"
)

func main(){
	s := "Hello, World!"

    //Count计算字符串sep在s中的非重叠个数:2
    //func Count(s, sep string) int
	fmt.Println(strings.Count(s, "o"))

	//Contains判断字符串s中是否包含子串substr:true
    //func Contains(s, substr string) bool
	fmt.Println(strings.Contains(s, "o"))

	//ContainsAny判断字符串s中是否包含chars中的任何一个字符:true
	//func ContainsAny(s, chars string) bool
	fmt.Println(strings.ContainsAny(s, "js0o"))

	//ContainsRune判断字符串s中是否包含字符r:true
	//Go语言的单引号一般用来表示「rune literal」,即码点字面量
	//func ContainsRune(s string, r rune) bool
	fmt.Println(strings.ContainsRune(s, ‘o‘))

	//Index返回子串sep在字符串s中第一次出现的位置,如果找不到,则返回-1:4
	//func Index(s, sep string) int
	fmt.Println(strings.Index(s, "o"))

	//LastIndex返回子串sep在字符串s中最后一次出现的位置,如果找不到,则返回-1:8
	//func LastIndex(s, sep string) int
	fmt.Println(strings.LastIndex(s, "o"))

	// IndexRune返回字符r在字符串s中第一次出现的位置,如果找不到,则返回-1:4
	//func IndexRune(s string, r rune) int
	fmt.Println(strings.IndexRune(s, ‘o‘))

	//IndexAny返回字符串chars中的任何一个字符在字符串s中第一次出现的位置:2
	//如果找不到,则返回-1
	//func IndexAny(s, chars string) int
	fmt.Println(strings.IndexAny(s, "opyql"))

	//LastIndexAny返回字符串chars中的任何一个字符在字符串s中最后一次出现的位置:10
	//如果找不到,则返回-1
	//func LastIndexAny(s, chars string) int
	fmt.Println(strings.LastIndexAny(s, "opyqlo"))

	//Split以sep为分隔符,将s切分成多个子切片:[Hello World!]
	//func Split(s, sep string) []string
	fmt.Println(strings.Split(s, ","))

	//HasPrefix判断字符串s是否以prefix开头:true
	//func HasPrefix(s, prefix string) bool
	fmt.Println(strings.HasPrefix(s, "H"))
	
	//HasSuffix判断字符串s是否以prefix结尾:true
	//func HasSuffix(s, suffix string) bool
	fmt.Println(strings.HasSuffix(s, "d!"))

	//Repeat将count个字符串s连接成一个新的字符串 :Hello, World!Hello, World!
    //func Repeat(s string, count int) string
	fmt.Println(strings.Repeat(s, 2))


	//ToUpper将s中的所有字符修改为其大写格式:HELLO, WORLD!
	//func ToUpper(s string) string
	fmt.Println(strings.ToUpper(s))

	//ToLower将s中的所有字符修改为其小写格式:hello,world!
	//func ToLower(s string) string
	fmt.Println(strings.ToLower(s))

	//Trim将删除s首尾连续的包含在cutset中的字符:世界!
	//func Trim(s string, cutset string) string
	sss := " Hello 世界! "
	fmt.Println(strings.Trim(sss, " Hello"))

	//TrimLeft将删除s头部连续的包含在cutset中的字符:世界!
    //func TrimLeft(s string, cutset string) string
	fmt.Println(strings.TrimLeft(sss, " Hello"))

	//TrimRight将删除s尾部连续的包含在cutset中的字符: Hello!
	//func TrimRight(s string, cutset string) string
	fmt.Println(strings.TrimRight(sss, " 世界!"))


	//TrimPrefix删除s头部的prefix字符串:,World!!!!!
	//func TrimPrefix(s, prefix string) string
	strings.TrimPrefix(s, "Hello")

	//TrimSuffix删除s尾部的suffix字符串:Hello,World!
	//func TrimSuffix(s, suffix string) string
	strings.TrimSuffix(s, "!!!!")

	//Replace返回s的副本,并将副本中的old字符串替换为new字符串: Hello, 世界!
    //替换次数为 n 次,如果 n 为 -1,则全部替换
	//func Replace(s, old, new string, n int) string
	fmt.Println(strings.Replace(s, "World!", "世界!",  -1))

	//EqualFold判断s和t是否相等。忽略大小写,同时它还会对特殊字符进行转换:true
	//比如将“?”转换为“Φ”、将“?”转换为“?”等,然后再进行比较
	//func EqualFold(s, t string) bool
	s1 := "Hello 世界! ? ?"
	s2 := "hello 世界! Φ ?"
	fmt.Println(strings.EqualFold(s1, s2))

	//通过字符串s创建strings.Reader对象
	//func NewReader(s string) *Reader { return &Reader{s, 0, -1} }
	r := strings.NewReader(s)

	//Len返回r.i之后的所有数据的字节长度:13
    //func (r *Reader) Len() int
	fmt.Println(r.Len())

	//Read将r.i之后的所有数据写入到b中(如果b的容量足够大)
	func (r *Reader) Read(b []byte) (n int, err error)
	b := make([]byte, 50)
	for n, _ :=r.Read(b); n>0; n,_ = r.Read(b){
		fmt.Println(string(b[:n])) 
	}

	//ReadAt将off之后的所有数据写入到b中(如果 b 的容量足够大)
	//func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)
	n, _ := r.ReadAt(b, 6)
	fmt.Println(string(b[:n]))

    //ReadByte将r.i之后的一个字节写入到返回值b中
    //func (r *Reader) ReadByte() (b byte, err error)
	r.ReadByte()
	fmt.Println(r)
		
	//Seek用来移动r中的索引位置,offset:要移动的偏移量,负数表示反向移动
	//whence:从那里开始移动,0:起始位置,1:当前位置,2:结尾位置
	//func (r *Reader) Seek(offset int64, whence int) (int64, error)
	r1 := strings.NewReader(s)
	b1 := make([]byte, 5)
	r1.Seek(6, 0) 
	r1.Read(b1)   // 开始读取
	fmt.Printf("%q\n", b1)
	r1.Seek(-5, 1) // 将索引位置移回去
	r1.Read(b1)    // 继续读取
	fmt.Printf("%q\n", b1)
	
	//WriteTo 将 r.i 之后的数据写入接口 w 中
	//func (r *Reader) WriteTo(w io.Writer) (n int64, err error)
	r2 := strings.NewReader(s)
	buf := bytes.NewBuffer(nil)
	
	r2.WriteTo(buf)
	fmt.Printf("%q\n", buf) 

	//NewReplacer 通过“替换列表”创建一个 Replacer 对象。
	//按照“替换列表”中的顺序进行替换,只替换非重叠部分。
	//如果参数的个数不是偶数,则抛出异常。
	//func NewReplacer(oldnew ...string) *Replacer
	//Replace 返回对 s 进行“查找和替换”后的结果
	//Replace 使用的是 Boyer-Moore 算法,速度很快
	//func (r *Replacer) Replace(s string) string

	srp := strings.NewReplacer("Hello", "你好", "World", "世界", "!", "!")
	s = "Hello World!Hello World!hello world!"
	rst := srp.Replace(s)
	fmt.Print(rst)

}

  

Go strings 包

标签:移动   hello   写入   sub   fun   ack   srp   抛出异常   ast   

原文地址:https://www.cnblogs.com/honglingjin/p/13215376.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!