枚举字母表的最快方法

发布于 2024-08-20 13:59:55 字数 180 浏览 6 评论 0原文

我想像这样迭代字母表:

foreach(char c in alphabet)
{
 //do something with letter
}

字符数组是执行此操作的最佳方法吗? (感觉很hacky)

编辑:该指标是“实现最少的打字,同时仍然具有可读性和健壮性”

I want to iterate over the alphabet like so:

foreach(char c in alphabet)
{
 //do something with letter
}

Is an array of chars the best way to do this? (feels hacky)

Edit: The metric is "least typing to implement whilst still being readable and robust"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

墨离汐 2024-08-27 13:59:55

(假设 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 
} 

(Assumes ASCII, etc)

for (char c = 'A'; c <= 'Z'; c++)
{
    //do something with letter 
} 

Alternatively, you could split it out to a provider and use an iterator (if you're planning on supporting internationalisation):

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 
} 
驱逐舰岛风号 2024-08-27 13:59:55

或者你可以这样做,

string alphabet = "abcdefghijklmnopqrstuvwxyz";

foreach(char c in alphabet)
{
 //do something with letter
}

Or you could do,

string alphabet = "abcdefghijklmnopqrstuvwxyz";

foreach(char c in alphabet)
{
 //do something with letter
}
驱逐舰岛风号 2024-08-27 13:59:55
var alphabet = Enumerable.Range(0, 26).Select(i => Convert.ToChar('A' + i));
var alphabet = Enumerable.Range(0, 26).Select(i => Convert.ToChar('A' + i));
不交电费瞎发啥光 2024-08-27 13:59:55
Enumerable.Range(65, 26).Select(a => new { A = (char)(a) }).ToList().ForEach(c => Console.WriteLine(c.A));
Enumerable.Range(65, 26).Select(a => new { A = (char)(a) }).ToList().ForEach(c => Console.WriteLine(c.A));
云仙小弟 2024-08-27 13:59:55

使用 Enumerable.Range< /a>:

Enumerable.Range('A', ('Z' - 'A' + 1)).Select(i => (char)i)

Use Enumerable.Range:

Enumerable.Range('A', ('Z' - 'A' + 1)).Select(i => (char)i)
老街孤人 2024-08-27 13:59:55

你可以这样做:

for(int i = 65; i <= 95; i++)
{
    //use System.Convert.ToChar() f.e. here
    doSomethingWithTheChar(Convert.ToChar(i));
}

不过,这也不是最好的方法。如果我们知道其中的原因,也许我们可以提供更好的帮助。

You could do this:

for(int i = 65; i <= 95; i++)
{
    //use System.Convert.ToChar() f.e. here
    doSomethingWithTheChar(Convert.ToChar(i));
}

Though, not the best way either. Maybe we could help better if we would know the reason for this.

許願樹丅啲祈禱 2024-08-27 13:59:55

我发现了这一点:

foreach(char letter in Enumerable.Range(65, 26).ToList().ConvertAll(delegate(int value) { return (char)value; }))
{
//breakpoint here to confirm
}

在随机阅读这个 博客 时,我认为它是完成任务的有趣方式。

I found this:

foreach(char letter in Enumerable.Range(65, 26).ToList().ConvertAll(delegate(int value) { return (char)value; }))
{
//breakpoint here to confirm
}

while randomly reading this blog, and thought it was an interesting way to accomplish the task.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文