如何列出所有拉丁(英文字母)字符?

时间:2011-12-10 20:27:39

标签: c# string

我正在寻找一种有效的方法来获取包含所有英语(拉丁语)字符的列表。

A, B, C, .... , Z

我真的不想要像这样的构造函数:

// nasty way to create list of English alphabet
List<string> list = new List<string>();
list.Add("A");
list.Add("B");
....
list.Add("Z");

// use the list
...

如果你对如何使用这个问题感兴趣,我正在创建一个bin-tree机制。

6 个答案:

答案 0 :(得分:13)

您可以使用for循环执行此操作:

List<char> list = new List<char>();
for (char c = 'A'; c <= 'Z'; ++c) {
    list.Add(c);
}

如果您想要List<string>而不是List<char>使用list.Add(c.ToString());

请注意,这只是因为字母A - Z出现在Unicode的连续序列中(代码点65到90)。相同的方法不一定适用于其他字母表。

答案 1 :(得分:9)

下面:

"ABCDEFGHIJKLMNOPQRSTUVWXYZ"

此字符串是字符列表。

使用ToCharArray或LINQ ToList转换为您选择的可枚举项,但您已经可以通过字符串的Chars索引器访问每个项目。

答案 2 :(得分:4)

使用LINQ

int charactersCount = 'Z' - 'A' + 1;
IList<char> all = Enumerable.Range('A', charactersCount)
                            .Union(Enumerable.Range('a', charactersCount))
                            .Select(i => (char)i)
                            .ToList();

答案 3 :(得分:2)

没有内置的方法来获取与每个字符对应的字符串列表。您可以使用以下代码获取IEnumerable,这可能适合您的目的。您也可以在from部分中坚持使用数组。

var letters = from letter in "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()
              select letter.ToString();

答案 4 :(得分:1)

这是我的解决方案(最终)

const string driveLetters = "DEFGHIJKLMNOPQRSTUVWXYZ";

List<string> allDrives = new List<string>(driveLetters.Length);
allDrives = (from letter
        in driveLetters.ToCharArray()
        select letter).ToList();

我最终得到了这个解决方案,因为最初我的目标是在Windows中创建所有可用驱动器的列表。这是实际的代码:

const string driveLetters = "DEFGHIJKLMNOPQRSTUVWXYZ";
const string driveNameTrails = @":\";

List<string> allDrives = (from letter
            in driveLetters.ToCharArray()
            select letter + driveNameTrails).ToList();

return allDrives;

答案 5 :(得分:0)

最简单的方法 -

  int start = (int) 'A';
  int end = (int) 'Z';

  List<char> letters = new List<char>();

  for (int i = start; i <= end; i++)
  {
    letters.Add((char)i);  
  }

同样但代码更少 -

IEnumerable<char> linqLetters = Enumerable.Range(start, end - start + 1).Select(t => (char)t);