• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

3.3 GO字符串处理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

strings方法

index

判断子字符串或字符在父字符串中出现的位置(索引)
Index 返回字符串 str 在字符串 s 中的索引( str 的第一个字符的索引),-1 表示字符串 s 不包含
字符串 str :
strings.Index(s, str string) int


LastIndex

返回字符串 str 在字符串 s 中最后出现位置的索引( str 的第一个字符的索引),-1 表示
字符串 s 不包含字符串 str :
strings.LastIndex(s, str string) int

 

IndexRune
如果 ch 是非 ASCII 编码的字符,建议使用以下函数来对字符进行定位:
strings.IndexRune(s string, ch int) int

 

func test12(){
    var str string = "学习,就是知已不足,寻找改变的方法,尝试尝试再尝试,并以此为乐...这就是学习"
    fmt.Printf("The position of \"方法\" is: ")
    fmt.Printf("%d\n", strings.Index(str, "方法"))
    fmt.Printf("The position of the first instance of \"学习\" is: ")
    fmt.Printf("%d\n", strings.Index(str, "学习"))
    fmt.Printf("The position of the last instance of \"学习\" is: ")
    fmt.Printf("%d\n", strings.LastIndex(str, "学习"))
    fmt.Printf("The position of \"哪怕改变再小\" is: ")
    fmt.Printf("%d\n", strings.Index(str, "哪怕改变再小"))
}

输出

The position of "方法" is: 45
The position of the first instance of "学习" is: 0
The position of the last instance of "学习" is: 105
The position of "哪怕改变再小" is: -1

 

字节与字符串转换

 

/**
func (this *Server) socketParserHandler(client *genTcpServer.Client, fullData []byte) {

    fmt.Println("original data is", client)
    strPointerHex := fmt.Sprintf("%p", unsafe.Pointer(client))
    fmt.Println("connection is", strPointerHex)

    strPointerInt := fmt.Sprintf("%d", unsafe.Pointer(client))
    fmt.Println("connection is", strPointerInt)

    i, _ := strconv.ParseInt(strPointerInt, 10, 0)

    var pointer *genTcpServer.Client
    pointer = *(**genTcpServer.Client)(unsafe.Pointer(&i))
    fmt.Println("connection pointer is", pointer)

    debugMsg := fmt.Sprintf("%p", unsafe.Pointer(pointer))
    fmt.Println("debugMsg is", debugMsg)
 */
func unsafeTest()  {
    ss := "工工在aaa"
    s1 := []byte(ss)
    a := unsafe.Pointer(&s1) //0xc0000a6ee0  取针指指向的地址,不限定类型
    fmt.Println(a)

    bb := (*string)(a)       //0xc0000a6ee0  取字节数组的开始地址,确定地址存储的类型是字符串
    b := fmt.Sprintf("%v",bb)
    fmt.Println(b)
    s2 := *bb
    fmt.Println(s2)  //工工在aaa


}


func testByte()  {
    ss := "工工在aaa"
    s1 := []byte(ss)
    mm := fmt.Sprintf("%v",s1)
    fmt.Println(mm)

    ss = ByteArrayToStr(mm)
    fmt.Println(ss)
}

//字符串转字节数据-->fmt.Sprintf("%v",s1) 格式化为字符串后-->转回原来的字符串
func ByteArrayToStr(byteStr string)  string{
    byteStr = strings.TrimLeft(byteStr,"[")
    byteStr = strings.TrimRight(byteStr,"]")
    b := strings.Split(byteStr," ")
    var bn  = make([]byte,0)
    for _,v := range b {
        i,_ := strconv.Atoi(v)
        c := byte(i)
        bn = append(bn,c)
    }
    return string(bn)
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
GO下载安装以及编辑器的安装 - 你说我记发布时间:2022-07-10
下一篇:
3.3 Go浮点型发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap