列举字母的最快方法
我想像这样迭代字母表:
foreach(char c in alphabet) { //do something with letter }
是一个字符数组最好的方式来做到这一点? (感觉哈克)
编辑:该指标是“最小的键入来实现,同时仍然可读和强大”
(假设ASCII等)
for (char c = 'A'; c <= 'Z'; c++) { //do something with letter }
或者,您可以将其分离出来供应商并使用迭代器(如果您计划支持国际化):
public class EnglishAlphabetProvider : IAlphabetProvider { public IEnumerable<char> GetAlphabet() { for (char c = 'A'; c <= 'Z'; c++) { yield return c; } } } IAlphabetProvider provider = new EnglishAlphabetProvider(); foreach (char c in provider.GetAlphabet()) { //do something with letter }
或者你可以做,
string alphabet = "abcdefghijklmnopqrstuvwxyz"; foreach(char c in alphabet) { //do something with letter }
var alphabet = Enumerable.Range(0, 26).Select(i => Convert.ToChar('A' + i));
Enumerable.Range(65, 26).Select(a => new { A = (char)(a) }).ToList().ForEach(c => Console.WriteLine(cA));
那么要在C#中使用foreach
循环,字母表可以是任何IEnumerable<char>
。 什么感觉“哈克”呢?
你可以这样做:
for(int i = 65; i <= 95; i++) { //use System.Convert.ToChar() fe here doSomethingWithTheChar(Convert.ToChar(i)); }
虽然,不是最好的方式。 也许我们可以帮助更好,如果我们知道这个原因。
我find了这个:
foreach(char letter in Enumerable.Range(65, 26).ToList().ConvertAll(delegate(int value) { return (char)value; })) { //breakpoint here to confirm }
而随机阅读这个博客 ,并认为这是一个有趣的方式来完成任务。