我想使用整个IEnumerable<char>
字符集生成ISO 8859-1
。根据这个定义:to this definition
我试过了:
testCollection = Enumerable.Range(0x20, 0xFF)
.Select(i => Convert.ToChar(i))
.Where(c => (c <= 0x7E && c >= 0xA1));
问题是testCollection始终为空。我做错了什么?
答案 0 :(得分:2)
c <= 0x7E && c >= 0xA1
永远不会成真。
尝试c <= 0xA1 && c >= 0x7E
实际上,我会把它写成:
0x7E <= c && c <= 0xA1
因为它将测试的值放在两个范围值之间,我认为这样可以更容易地看出它是正确的。
你的代码有点奇怪;它使用的初始范围为20h到ffh,但之后仅使用从7eh到a1h的小节。为什么不将其用作初始范围并丢失Where()
?
你也可以这样做:
char start = '\x7e';
char end = '\xa1';
var testCollection = new char[end-start+1];
for (char curr = start; curr <= end; ++curr)
testCollection[curr - start] = curr;