作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一组字符串(ASCII),我想分配给一个字符串数组(第128章)。
字符串在数组中的位置由字符串的第一个字符的ASCII值确定。
喜欢..
strArr := [128]string{}
strA := "A string"
strB := "B string"
strArr[65] = strA // since strA started with 'A' & ASCII('A') = 65
strArr[66] = strB // since strB started with 'B' & ASCII('B') = 66
utf8
包的解决方案,例如...
r, _ := utf8.DecodeRuneInString(strA)
strArr[r] = strA
最佳答案
如果可以确定您的字符串不是空的并且它们的第一个 rune 在0..127
的范围内,则可以简单地执行以下操作:
strArr[strA[0]] = strA
strArr[strB[0]] = strB
0..127
范围内将 rune 映射到字节从1到1,所以第一个字节是第一个
rune
的值。
strA
或
strB
为空,或者它们的第一个 rune 不在
0..127
的范围内,则上面的代码会出现 panic 。
func set(s string) {
if s == "" || s[0] > 127 {
return
}
strArr[s[0]] = s
}
set()
函数对
s
字符串进行两次索引(首先是在检查第一个 rune /字节是否在有效范围内时,其次是在对
strArr
进行索引时)。我们可能会存储第一个索引的结果,并在第二种情况下重用它,这可能会或可能不会改善性能:
func set2(s string) {
if s != "" {
return
}
if first := s[0]; first <= 127 {
strArr[first] = s
}
}
关于string - 如何将字符串的charAtIndex转换为ASCII等效的int值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436609/
我是一名优秀的程序员,十分优秀!