3.3 GO字符串处理
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)
- }
3.3 GO字符串处理的更多相关文章
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简 ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- JavaScript 字符串实用常操纪要
JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Redis的简单动态字符串实现
Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,sds)的抽象类 ...
- ASP.NET加密和解密数据库连接字符串
大家知道,在应用程序中进行数据库操作需要连接字符串,而如果没有连接字符串,我们就无法在应用程序中完成检索数据,创建数据等一系列的数据库操作.当有人想要获取你程序中的数据库信息,他首先看到的可能会是We ...
- Javascript正则对象方法与字符串正则方法总结
正则对象 var reg = new Regexp('abc','gi') var reg = /abc/ig 正则方法 test方法(测试某个字符串是否匹配) var str = 'abc123'; ...
- 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)
转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...
- ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案
好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...
随机推荐
- Invalid prop: type check failed for prop "xxx". Expected Number, got String.
在子组件progress-circle.vue的template中的定义如下: <svg :width="radius" :height="radius" ...
- 2021 祥云杯 wp
52 web ezyii https://pan.baidu.com/s/1j7IJm9xiea5FvBhPMkPNoQ 提取码GAME <?php include("closure/ ...
- Spring Ioc 容器初始化过程
IOC 是如何工作的? 通过 ApplicationContext 创建 Spring 容器,容器读取配置文件 "/beans.xml" 并管理定义的 Bean 实例对象. 通 ...
- Unable to unwrap data, invalid status [CLOSED]-服务端webSocket报错
一.问题由来 现在的项目中在使用webSocket这门技术,主要用来在服务端和客户端进行实时的数据传输,因为需要及时的进行响应,所以才没有使用http请求的方式, 而是使用socket的方式,这样可以 ...
- FastJson测试用例
基础测试 package com.ai; import com.ai.test.daily.Student; import com.alibaba.fastjson.JSON; import com. ...
- 新玩法-使用AllArgsConstructor+filal代替autowired
和下面的代码一样: Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入原因:final修饰的成员变量是不能够被修改的,反射那就没办法了 还有一种写法: @Requir ...
- springboot配置自动提示插件-IDEA
社区版的IDEA编辑spring boot项目的properties或者yml文件不会自动提醒.可手动安装IDEA的插件解决. Setting >> Plugins >> 搜索 ...
- Java设计模式之(十一)——享元模式
1.什么是享元模式? Use sharing to support large numbers of fine-grained objects efficiently. 享元模式(Flyweight ...
- c语言指针学习笔记
指针变量就是存放内存地址的变量.c语言中使用 int *pa; 的方式来定义指针. ` main() int a = 10, b=20, s, t, *pa, *pb,*pc,*pd; pa = &a ...
- Atcoder Regular Contest 061 D - Card Game for Three(组合数学)
洛谷题面传送门 & Atcoder 题面传送门 首先考虑合法的排列长什么样,我们考虑将每次操作者的编号记录下来形成一个序列(第一次 A 操作不计入序列),那么显然这个序列中必须恰好含有 \(n ...