【发布时间】:2019-05-13 21:06:24
【问题描述】:
当比较来自两个单独的 byte[] 源(数组/指针)的单个字节值时,如何执行 case INSENSITIVE 比较?
我有一个非常大的字节数组,其中包含我通过指针访问的字符串的“干草堆”,我将它与“针”模式进行比较,但目前它仅在存在完全区分大小写的匹配时才返回。
是否可以创建一个包含从上到下的值的查找字典并在比较循环中使用它,还是有更快的方法? (性能方面)
编辑1:
字符串是 UTF8 编码的。
期望的行为是:在比较 a,a 时返回 true;一个,一个;或a,A。但由于 UTF8 中的 'A' 的值为 65,而 'a' 的值为 97,我无法进行不区分大小写的比较。
【问题讨论】:
-
将每个数组转换为字符串,然后进行不区分大小写的比较...
-
这取决于编码。你在处理 ascii 字符串吗?
-
字节区分大小写是什么意思?数组是否代表 ascii 编码的字符串?
-
小写和大写 ACSII 代码的偏移量为 32,因此如果我理解正确,您可以将
x == byte[x] || byte[x+32]与 x=大写进行比较 -
UTF8 的偏移量应该相同
标签: c# arrays performance