有谁知道如何做到这一点? Maxim的代码非常适合获取字符串中可打印字符的计数。
alias simd_width_u8 = simdwidthof[DType.uint8]()
fn rune_count_in_string(s: String) -> Int:
var p = s._as_ptr().bitcast[DType.uint8]()
var string_byte_length = len(s)
var result = 0
@parameter
fn count[simd_width: Int](offset: Int):
result += (
((p.load[width=simd_width](offset) >> 6) != 0b10)
.cast[DType.uint8]()
.reduce_add()
.to_int()
)
vectorize[count, simd_width_u8](string_byte_length)
return result
ord每晚分支的和
更改chr有助于处理单个字符的转换。但我无法迭代字符串的代码点,因为迭代字节不适用于此用例。
这对我来说都是相当新的,所以我很好奇是否有人已经解决了这个问题🙂