记一次GO字符串的使用

目录

GO字符串

        字节数组

        头尾处理

        strings使用

                1、位置索引

                2、替换

                3、统计次数

                4、重复

                5、大小写

                6、去除字符

                7、切片处理

                8、数值处理

                示例:使用sprintf函数处理。


GO字符串

        字节数组

package main

import "fmt"

func main() {
	var (
		str1 = "hello"
		str2 = "world"
	)
	str3 := str1 + "" + str2 //字符串转换成字节数组

	tmp := []byte(str3)
	fmt.Println(str3)
	fmt.Println("字节数组", tmp)

	fmt.Println("字节数组转字符串: ", string(tmp))

	//反转函数调用​
	fmt.Println("反转:", Reverse(str3))
}

//反转
func Reverse(str string) string {

	var (
		result string
		leng   int = len(str)
	)

	for i := leng - 1; i >= 0; i-- {
		result = result + fmt.Sprintf("%c", str[i])
	}

	return result
}

运行结果:

helloworld
字节数组 [104 101 108 108 111 119 111 114 108 100]
字节数组转字符串:  helloworld
反转: dlrowolleh

        头尾处理

示例:判断字符串s是否以prefix开头,判断URL是否以"http://"为开头,如果不是,则加上"http://".判断字符串s是否以suffix结尾,判断路径是否以"/"为结尾,如果不是,则加上"/"为结尾。

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    var (
        url  string
        path string
    )
    fmt.Scanf("%s%s", &url, &path)
    fmt.Println(Urlperix(url))
    fmt.Println(Pathperix(path))
}
​
func Urlperix(url string) string {
    result := strings.HasPrefix(url, "http://")
    if !result {
        url = fmt.Sprintf("http://%s", url)
    }
    return url
}
func Pathperix(path string) string {
    result := strings.HasPrefix("/", path)
    if !result {
        path = fmt.Sprintf("%s/",path)
    }
    return path
}

运行结果

PS D:\golang\src\day15\demo3\HashPeri> go run .\main.go
www.baidu.com /root/go
http://www.baidu.com
/root/go/

        strings使用

                1、位置索引

示例:判断子字符串在字符串中首次出现的位置和从末尾出现的位置。

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    var (
        a = "abcdefcdffrdccdkjcd"
        b = "cd"
    )
​
    couts := strings.Index(a,b)
    fmt.Println("b在a中第一次出现得位置:",couts)
​
    couts1 := strings.LastIndex(a,b)
​
    fmt.Println("从后往前b在a中第一次出现得位置:",couts1)
}

运行结果

b在a中第一次出现得位置: 2
从后往前b在a中第一次出现得位置: 17

                2、替换

package main
import (
    "fmt"
    "strings"
)
fune main() {
    var (
        s = "abbaabcddccd"
    )
    //把cd换成CD,-1表示全部替换0表示不替换
result := strings.Replace(s, "cd" ,"CD",-1)
    fmt .Print1n(result)
}
​

运行结果

abbaabCDdcCD

                3、统计次数

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    var (
        a = "abcdefcdffrdccdkjcd"
        b = "cd"
    )
        s :=strings.Count(a,b)
    fmt.Println("b在a中出现得次数",s)
}

运行结果

b在a中出现得次数 4

                4、重复

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    var a = "abc"
​
    b := strings.Repeat(a,3)
    fmt.Println("输出结果:",b)
}

运行结果

输出结果: abcabcabc

                5、大小写

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    var a = "abc"
​
    restlu1 := strings.ToUpper(a)
    fmt.Printf("大写为%v\n", restlu1)
​
    restlu2 := strings.ToLower(a)
    fmt.Printf("小写为%v", restlu2)
}
​

运行结果

大写为ABC
小写为abc

                6、去除字符

去除首尾字符

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    
    var b = " abc "
​
    fmt.Println("长度为:",len(b))
    num := strings.TrimSpace(b)
    fmt.Printf("b输出结果为%s,字符长度为%d\n", num, len(num))
}

运行结果

长度为: 5
b输出结果为abc,字符长度为3

        去除首尾和指定位置字符

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    var a = "this is abc web"
        //从左向右删除a中所有相匹配的字符,直到不匹配为止
    num1 := strings.TrimLeft(a, " this") //空格也算
    fmt.Println(num1)
​
    //从右向左删除a中所有相匹配的字符,直到不匹配为止
    num2 := strings.TrimRight(a, " cweb")
    fmt.Println(num2)
​
    //去掉字符串首尾部web
    num3 := strings.Trim(a, "web")
    fmt.Printf("%v", num3)
​
}
​

运行结果

abc web
this is a
this is abc 

                7、切片处理

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    var a = "abc def ghi"
​
    //fields只识别空格
    restlu := strings.Fields(a)
​
    fmt.Printf("数据类型为%T\n数据内容是%v\n", restlu, restlu)
    for i := 0; i < len(restlu); i++ {
        fmt.Println(restlu[i])
    }
}

运行结果

数据类型为[]string
数据内容是[abc def ghi]
abc
def
ghi

示例,以指定符号分隔转换为切片

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    var a = "abc,def,ghi"
​
    //fields只识别空格
    restlu := strings.Split(a, ",")
​
    fmt.Printf("数据类型为%T\n数据内容是%v\n", restlu, restlu)
​
}
运行结果
数据类型为[]string
数据内容是[abc def ghi]

把切片按指定分隔符和在一起

package main
​
import (
    "fmt"
    "strings"
)
​
func main() {
    var a = "abc def ghi"
​
    //fields只识别空格
    restlu := strings.Split(a, " ")
​
    fmt.Printf("数据类型为%T\n数据内容是%v\n", restlu, restlu)
​
    restlu2 := strings.Join(restlu, ",")
​
    fmt.Printf("数据类型为%T\n数据内容是%v\n", restlu2, restlu2)
​
}
​
运行结果

数据类型为[]string
数据内容是[abc def ghi]
数据类型为string
数据内容是abc,def,ghi

                8、数值处理

示例:数值转换成字符串。

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var num int = 123456
	fmt.Printf("num数据类型:%T\n", num)
	//数值转换字符串
	result := strconv.Itoa(num)
	fmt.Printf("result数据类型:%T\n", result)
	fmt.Println(result)
}

运行结果:

num数据类型:int
result数据类型:string
123456
​

                示例:使用sprintf函数处理。

package main
​
import(
    "fmt"
)
func main(){
    var num int = 123456
    fmt.Printf("nur数据类型:%T\n",num)
//使用Sprintf()转换字符串,可以实现多类型转化
    result := fmt.Sprintf("%d" , num)
​
    fmt.Printf( "result数据类型:%T\n",result)
}
运行结果:

num数据类型:int
​
result数据类型:string

        示例:字符串转整数。

package main
import (
    "fmt"
    "strconv"
)
func main() {
    var str string = "123456"//字符串转整数
​
    result, err := strconv.Atoi(str)
    if err == nil {
        fmt .Printf("数据类型:%T\n", result)
             
    } else {
            
        fmt.Println(err)
    }
}
​
运行结果:

数据类型: int

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柏ぁ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值