C # коды для получения списка строк, таких как от А до Я?

3

Как я могу получить список строк от "A:" до "Z:" в С#? Что-то вроде этого:

List<string> list = new List<string>();
for (int i = 0; i < 26; i++)
{
   list.Add(string.Format("{0}:", Convert.ToChar('A' + i));
}

Извините, у меня нет VS для проверки прямо сейчас, чтобы проверить. Кстати, есть ли веб-сайт для интерактивного тестирования кода?

  • 0
    Большое спасибо за все хорошие ответы. Мне действительно нравятся коды VS 2008, однако я должен использовать один для VS 2005.
Теги:
visual-studio-2005

8 ответов

3
Лучший ответ

Ну, не считая пропущенных ')' в конце строки list.Ad...., все в порядке, хотя вы могли бы написать это, используя немного более короткую запись

list.Add((char)('A' + i) + ":");
  • 0
    Мне это нравится. Должен работать как в VS 2005, так и в 2008 году.
  • 1
    Это много ненужного кастинга и т. Д. - посмотрите мое пересмотренное решение, если вы не заинтересованы в LINQ.
13
from ch in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" select ch + ":";
  • 0
    Мне очень нравится внешний вид этого.
  • 0
    Да, это мило.
Показать ещё 2 комментария
11

Использование LINQ:

List<string> aToZ = Enumerable.Range('A', 26)
                              .Select(x => (char) x + ":")
                              .ToList();

Не использовать LINQ - более простая альтернатива (IMO) для исходного цикла:

List<string> list = new List<string>();
for (char c = 'A'; c <= 'Z'; c++)
{
   list.Add(c + ":");
}
  • 2
    Хех, хотя вы использовали строчные буквы! (шучу, у нас почти одинаковые ответы)
  • 0
    Ой, спасибо, исправлено :)
Показать ещё 1 комментарий
2

Изменить: Y'all должен был помечать меня для ответа без чтения. Это не работает в VS2005, о чем спрашивал OP.

List<string> list = new List<string>(Enumerable.Range((int)'A', 26).Select(value => ((char)value).ToString() + ':'));
  • 0
    Не нужно явно вызывать ToString, вы используете строковый литерал на RHS +. Или есть строка. Формат, конечно.
  • 0
    Поскольку он больше не применяется, вы можете удалить его.
Показать ещё 1 комментарий
1

Как насчет:

var list = Enumerable.Range('a', 'z' - 'a' + 1).Select(charCode => (char)charCode)).ToList();
0

Для тестирования фрагментов кода я использую LinqPad или Компилятор Snippet. Я предпочитаю LinqPad, но оба они очень приятные.

0

Твоя работа прекрасна, за исключением отсутствия а). Я тестирую все свои snipits с LinqPad. (Я не знаю, как я жил без него).

0

Другой ответ; -)

List<string> list = new List<string>();
for (int i = 'A'; i <= 'Z'; i++)
{
    list.Add(string.Format("{0}:", Convert.ToChar(i)));
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню