关于go语言字符串的使用,通过strings包是最方便的,里面提供有多种方法,可以快速地判断字符串位置,前缀和后缀,替换某个字符或删除等。下面这个例子,通过标准键盘输入,接收一个字符串,然后进行各种字符串操作示范。
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func prints(s string,title string) {
fmt.Printf("打印,%s:\n",title)
for _,v:= range s {
fmt.Printf("%v\t",v)
}
fmt.Println("")
}
func main() {
inputread:=bufio.NewReader(os.Stdin)//从标准键盘输入
fmt.Println("请输入你的名字:")
//下面是if的特殊写法,把表达式和判断放到一行。
if input,err:=inputread.ReadString('\n'); err!=nil {//读入字符串,以换行符结束。并判断是否输入错误。
fmt.Printf("输入错误%s\n",err)
return
} else {
prints(input,"原始输入")
dels:="go" //要删除的字符串
//if strings.Index(input,dels) ==0 {//Index判断某个字符串的位置,如没找到返回-1。
//用Contains判断字符串是否包含子串,strings.Contains(input, dels)如有返回true,否则返回false。
//只是Contains判断适用字符串中只含有一处子串的情况,如我们要判断前缀和后缀就不适用此方法。
if strings.HasPrefix(input,dels) { //HasPrefix判断是否有前缀
input=strings.TrimPrefix(input, dels) //调用TrimPrefix方法删除指定的前缀
//input=input[len(dels):]//也可以直接用切片运算来操作
prints(input,"删除前缀")
}
input=strings.TrimSpace(input) //调用TrimSpace方法删除前后的空格及换行符等
prints(input,"去除前后空格换行")
input=strings.Replace(input," ","-",-1) //Replace方法是把字符串中间的空格替换为-,-1表示替换整个字符串
prints(input,"替换中间空格为-")
input=strings.ToLower(input)//修改字符串为小写,ToUpper为大写
prints(input,"改为小写")
if strings.Index(input,dels) == len(input)-len(dels) {//通过index和len字符串长度,查找删除的字符串是否在后缀结尾
//if strings.HasSuffix(input,dels) { //HasSuffix判断是否有后缀
//strings.HasPrefix(input,dels) strings.HasSuffix(input,dels) 可以用这两个方法快速判断前缀和后缀
//input=strings.TrimSuffix(input, dels) //调用TrimPrefix方法删除指定的后缀
input=input[:len(input)-len(dels)]//用切片运算操作
prints(input,"删除后缀")
}
fmt.Printf("你好,%s\n",input)
}
fmt.Println("88")
}