首页
学习
活动
专区
圈层
工具
发布

字节面试:Go 字符串截取坑

1️⃣错误示范:直接按索引截取展开代码语言:GoAI代码解释packagemainimport"fmt"funcmain(){str:="Go测试"//❌错误:直接按字节截取sub:=str[:3]fmt.Println...核心原因:Go字符串是字节数组在Go中,string底层是[]byte,索引操作str[i]或切片str[:n]按字节(byte)计算,而不是按字符(character)计算。...内存布局图解展开代码语言:TXTAI代码解释字符串:"G""o""测""试"字节数:1133索引:[0][1][2][3][4][5][6][7]↑str[:3]截到这里G:ASCII码,占1字节o:ASCII...面试时可以补充:短字符串:直接[]rune转换,代码清晰。长字符串/高性能场景:使用utf8.RuneCountInString先判断长度,或遍历range截取。...要想截取不乱码,转成rune再操作。✅避坑指南:涉及用户输入、国际化场景,永远不要假设1字符=1字节!

22410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前端-js截取字符串

    今天我要跟大家分享的是js截取字符串。遇到这样的问题,大家可能选择直接百度,但是百度到的方法,有些却不尽你意,小编也是遇坑之后,想想还是自力更生吧,现在整理出来分享给大家。 话不多说啦,就是上干货。...2、中英文组合、表情的字符串 这才是咱们今天的主角 二、代码片段      /** * @获取字符串字节长度 * @param {String} str * @returns */ function getStrLen...currLen >= 0 && currLen <= 128) { len += 1; } else { len += 2; } } return len; }     /** * @截取指定长度的字符串...(不知道位、字节、字符、字符串的可以自行百度); 其次,通过charCodeAt()方法获取某个字符的Unicode编码(后面有解释)。...这样可以知道一个字符串的长度; 接着,截断字符串,先判断字符串长度是否小于等于指定长度,是,则直接原样返回,否则,继续下一步; 最后,要实现按指定长度截断,就必须对每个字符进行判断是几个字节,对未超出指定长度的字符进行累加

    6.4K30

    JS截取字符串常用方法

    函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //...arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的数组 函数:Join() 功能:使用您选择的分隔符将一个数组合并为一个字符串 例子: var delimitedString...”gif”,”ico”,”png”); var portableList=myList.join(”|”); //结果是jpg|bmp|gif|ico|png 函数:substring() 功能:字符串截取...,比如想从"MinidxSearchEngine”中得到"Minidx”就要用到substring(0,6) 定义和用法 substring 方法用于提取字符串中介于两个指定下标之间的字符。...语法 stringObject.substring(start,stop) 函数:substr() 定义和用法 substr 方法用于返回一个从指定位置开始的指定长度的子字符串。

    5K20

    总结js中字符串截取的几种方法

    截取字符串是我们在工作中十分常见的需求,像我这种记性差的,就总记不住那几个词,每次用到都得去百度,然后每次百度到的内容还都不一样,然后就百度到啥就用啥,一直也没有研究一下几种截取字符串的方法有啥区别。...js提供的原生截取方法 首先需要强调的一件事就是,在js中,字符串一旦被创建,就永远无法修改,所以js提供的字符串相关的截取方法就不存在会影响原字符串的说法 slice 定义 slice() 方法可提取字符串的某个部分...也就是说,-1 指从最后一个字符开始截取,-2 指从倒数第二个字符开始截取,以此类推。 end 截取到哪个字符串。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。...语法 stringObject.substring(start,stop) 参数 描述 start 从何处开始截取字符串,不可为负数 end 截取到哪个字符串。...开始,截取length个字符串并返回。

    3.3K30

    JS截取字符串substr 和 substring方法的区别

    要提取子字符串的字符串文字或 String 对象。 start 必选项。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。 length 可选项。...在返回的子字符串中应包括的字符个数。 说明 如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到 stringvar 的最后。...end 指明子字符串的结束位置,该索引从 0 开始起算。 说明 substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。...子字符串的长度等于 start 和 end 之差的绝对值。例如,在 strvar.substring(0, 3) 和 strvar.substring(3, 0) 返回的子字符串的的长度是 3。..."; ss = s.substring(12, 17); // 取子字符串。 return(ss); // 返回子字符串。 }

    2.5K50

    JS-字符串截取方法slice、substring、substr的区别

    一、使用 slice() 截取 1,函数说明 slice() 方法可通过指定的开始和结束位置,提取字符串的某个部分,并以新的字符串返回被提取的部分。...如果没有指定该参数,那么截取的字符串包含从 start 到结束的所有字符。如果这个参数是负数,那么它规定的是从数组尾部开始算起的字符。...(3)); //3456789 console.log("从索引为20的字符起一直到结束:", str.substr(20)); // console.log("从索引为3的字符起截取长度为5的字符串...:", str.substr(3,5)); //34567 console.log("从索引为3的字符起截取长度为20的字符串:", str.substr(3,20)); //3456789 附:其他一些常用的方法...下面这些函数可以辅助我们进行字符串的截取工作。

    4.4K10

    shell字符串截取

    利用tr 指令实现字符替换 tr "oldSpilt" "newSpilt" 测试字符串 var=1234567890abcedef1203 1、使用#截取0以后的内容 echo ${var#*0} 结果...:abcedef1203 #表示操作符,*0表示从左往右找到第一个0,截取0之后的所有字符 echo ${var##*0} 结果:3 #表示操作符,*0表示从右往左找到第一个0,截取0之后的所有字符 2...、使用%截取 echo ${var%0*} 结果:1234567890abcedef12 %表示操作符,0*表示从右往左找到第一个0,截取0之前的所有字符 echo ${var%%0*} 结果:123456789...%表示操作符,0*表示从左往右找到第一个0,截取0之前的所有字符 3、根据索引来截取 echo ${var:0:7} 结果:1234567 其中的 0 表示左边第一个字符开始,7 表示字符的总个数。...echo ${var:0-7} 结果:def1203 如果不加字符个数就截取剩下的所有字符

    1.8K20

    Vue js 截取字符串及数据类型强制转换

    整理一下 Vue JS 截取字符串和数据类型转换的一些方法: 截取字符串: 这里总结了3种方法,可以根据需要使用。... = str.substring(0);//返回整个字符串 abcdef // 使用一个参数 str = str.slice(2);//截取第2位之后所有的字符 cdef str = str.substr.../截取第2到第4位之间的字符 cd str = str.substr(2,4);//截取从第3个开始往后数4位之间的字符 cdef str = str.substring(2,4);//截取第2到第4位之间的字符...*/ String(value) 利用JS变量弱类型转换: 举个小例子,一看,就会明白了。 ...代码如下: var str= '012.345 '; var x = str-0; x = x*1; 上例利用了 JS 的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的

    4.6K21
    领券