go 算法 查询字符在字符串中的位置

Wesley13
• 阅读 341

在utf8字符串判断是否包含指定字符串,并返回下标。
"北京天安门最美丽" , "天安门"
结果:2

解答:

import (
    "fmt"
    "strings"
)

func main(){
    fmt.Println(Utf8Index("北京天安门最美丽", "天安门"))
    fmt.Println(strings.Index("北京天安门最美丽", "男"))
    fmt.Println(strings.Index("", "男"))
    fmt.Println(Utf8Index("12ws北京天安门最美丽", "天安门"))
}

func Utf8Index(str, substr string) int {
    asciiPos := strings.Index(str, substr)
    if asciiPos == -1 || asciiPos == 0 {
        return asciiPos
    }
    pos := 0
    totalSize := 0
    reader := strings.NewReader(str)
    for _, size, err := reader.ReadRune(); err == nil; _, size, err = reader.ReadRune() {
        totalSize += size
        pos++
        // 匹配到
        if totalSize == asciiPos {
            return pos
        }
    }
    return pos
}
点赞
收藏
评论区
推荐文章
Andy20 Andy20
3年前
Golang中常用的字符串操作
Golang中常用的字符串操作一、标准库相关的Packagegoimport("strings")二、常用字符串操作1.判断是否为空字符串1.1使用“”进行判断思路:直接判断是否等于""空字符串,由于Golang中字符串不能为nil,且为值类型,所以直接与空字符串比较即可。举例:go
Karen110 Karen110
2年前
盘点Python字符串常见的16种操作方法
大家好,我是Go进阶者,上篇文章给大家介绍了Python字符串,今天给大家分享一些Python字符串的常用操作,一起来看看吧一、常用操作以字符串lstr'welcometoBeijingMuseumitcppsfdsfs'为例,介绍字符常见的操作。<1find检测str是否包含在lstr中,如果是返回开始的索引值,否则返回1。语法:ls
Karen110 Karen110
2年前
盘点Python字符串常见的16种操作方法
大家好,我是Go进阶者,上篇文章给大家介绍了Python字符串,今天给大家分享一些Python字符串的常用操作,一起来看看吧一、常用操作以字符串'lstr'welcometoBeijingMuseumitcppsfdsfs'为例,介绍字符常见的操作。<1find检测str是否包含在lstr中,如果是返回开始的索引值,否则返回1。语法:l
Andy20 Andy20
3年前
go语言之进阶篇字符串操作常用函数介绍
下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档。一、字符串操作常用函数介绍1、ContainsfuncContains(s,substrstring)bool功能:字符串s中是否包含substr,返回bool值示例:fmt.Println(strings.Contains(
风斗 风斗
3年前
Go 正则表达式
packagemainimport"bytes"import"fmt"import"regexp"funcmain(){//这个测试一个字符串是否符合一个表达式。match,_:regexp.MatchString("p(az)ch","peach")fmt.Println(match)//上面我们是直接使
Wesley13 Wesley13
2年前
ES6 新增了哪些字符串处理方法
ES6新增了哪些字符串处理方法我们都知道在ES6之前,我们只能使用indexOf来判断字符串是否存在某个字符,现在ES6多出了几个比较常用的方法:includes():返回布尔值,判断是否找到参数字符串。startsWith():返回布尔值,判断参数字符串是否在原字符
Stella981 Stella981
2年前
JS学习之路之JavaScript match() 方法
match()方法,在字符串内找到相应的值并返回这些值,()内匹配字符串或者正则表达式。该方法类似indexOf()和lastIndexOf(),但是它返回指定的值,而不是字符串的位置。demo1:<scripttype"text/javascript"varstr"Helloworld!"d
Stella981 Stella981
2年前
Golang字符串格式化
Go对字符串格式化提供了良好的支持。下面我们看些常用的字符串格式化的例子。packagemainimport("fmt""os")typepointstruct{x,yint}funcmain(){
Wesley13 Wesley13
2年前
Java indexOf() 方法
indexOf()方法有以下四种形式:publicintindexOf(intch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回1。publicintindexOf(intch,intfromIndex): 返回从fromIndex位置开始查找指定
Wesley13 Wesley13
2年前
ES6基础之——判断字符串里是否包含其他字符串
在ES6里面添加了一些字符串的方法:includes()、startsWith()、endsWith(),他们可以很方便的判断字符串里是否包含其他字符串;includes():是否包含了参数字符串,返回布尔值startsWith():参数字符串是否在原字符串的头部,返回布尔值endsWith():参数字符串是否在原字符串的尾部,返回布尔值例子