如何生成特定字符集的char arrray?

时间:2016-02-16 08:55:29

标签: c# character-encoding char

我想使用整个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始终为空。我做错了什么?

1 个答案:

答案 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;