在这个例子中,我必须将数组转换为字符串以使用内置的String.Compare方法.
char[] array = {'a','b','c'};
string s = "abc";
// here is the extra string allocation
var arrayString = new String(array);
var compareResult = String.Compare(s, arrayString);
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以将字符串与char数组进行比较而无需额外的字符串分配?
注意:我需要比较语义,我需要"[a] 32位有符号整数,表示两个比较之间的词汇关系."
小于零 - > strA小于strB.
零 - > strA等于strB.
大于零 - > strA大于strB.
(我在循环中进行这种比较,并且我使用额外的字符串分配生成了大量额外的垃圾(基于输入的大小为25-100MB)_.
我想我最终可能会弄脏自己,只是自己编写代码.
试试这个
int len = Math.Min(array.Length, s.Length);
for (int i = 0; i < len; i++) {
if (s[i] < array[i]) return -1;
if (s[i] > array[i]) return +1;
}
return s.Length.Compare(array.Length);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |