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模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...
随机推荐
- Robot Framework操作MySQL数据库
1.安装databaselibrary.pymysql 通过cmd命令执行:pip install robotframework-databaselibrary cmd命令执行:pip install ...
- mysqld:未被识别的服务(解决方法)
启动Mysql:sudo service mysqld start 执行该命令时,提示错误 mysqld:未被识别的服务,如图 解决办法如下: 1·.首先要找到 mysql.server 文件 命 ...
- codeforces心得1---747div2
codeforces心得1---747div2 cf div2的前AB题一般是字符串or数论的找规律结论题 因此标程极为精简 1.小窍门是看样例或者自己打表或造数据找规律 2.一些不确定的操作,可以化 ...
- Python 爬取 房天下
... import requests from requests import ConnectionError from bs4 import BeautifulSoup import pymong ...
- 微软商店打不开的教程(错误代码0x80131500)
1 打开win+R 输入`inetcpl.cpl` 2 点击高级 3 勾选上`使用TLS 1.2`或者点击还原默认设置就可以啦 4 然后就可以打开啦
- 编译使用nginx
nginx-1.18.0 ./configure --prefix=$HOME/nginx --with-http_ssl_module make -j32; make install [fangju ...
- SQL中单引号和双引号
比如说: String sql = "select * from clients where logname='" + name + "'and password='&q ...
- [hdu7020]Array
(这是一个线性的做法) 显然对于合法的区间,众数是唯一的,因此不妨枚举众数,将众数标记为1.其余数标记为-1,此时问题即求有多少个区间和大于0 考虑暴力的做法:从左到右枚举右端点,记当前前缀和为$to ...
- [atARC114F]Permutation Division
由于是排列,即任意两个数字都各不相同,因此字典序最大的$q_{i}$就是将每一段的第一个数从大到小排序 接下来,考虑第一个元素,也就是每一段开头的最大值,分类讨论: 1.当$p_{1}\le k$时, ...
- 分布式事务(七)之Seata简介
在前面的文章中,我们介绍了分布式事务的概念以及一些解决方案.fenSeata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata将为用户提供了AT.TCC.SAGA和 ...