Вот как вы можете сделать альфа рода («A-Z», «аа-ZZ», и т.д.):
public static void GenerateFileNames(int totalFiles)
{
for (int i = 0; i < totalFiles; i++)
{
Console.WriteLine(GetString(i));
}
}
public static string GetString(int index)
{
if (index < 26)
{
return ((char)('A' + index)).ToString();
}
return GetString(index/26 - 1) + GetString(index % 26);
}
Просто позвоните GenerateFileNames()
с общим количеством файлов и функция GetString()
вернется имя файла, начинающееся с A
и идущее вверх по алфавиту через последнее имя файла.
Этот ответ был взят из linked question и прекрасно работает, чтобы делать то, что вы просите. В принятом ответе также содержится другой метод для достижения того же. (. Бывших «AAAA»)
Если вы хотите использовать больше букв в ваших именах файлов, вот метод, который вы можете использовать, чтобы получить индекс:
public static int GetStartIndex(string letters)
{
int index = 0;
for (int i = letters.Length - 1; i > 0; i--)
{
index += (int)Math.Pow(26, i);
}
return index;
}
И с перегрузкой на GenerateFileNames()
:
public static void GenerateFileNames(int totalFiles, int startIndex)
{
for (int i = startIndex; i < totalFiles + startIndex; i++)
{
Console.WriteLine(GetString(i));
}
}
Вы можете позвонить по телефону GenerateFileNames(100, GetStartIndex("AAAA"));
, чтобы написать 100 файлов alpha отсортированных, начиная с AAAA
.
EDIT:
Я хотел бы отметить, что для строк гораздо больше, чем AAAA
, вы можете использовать long
вместо int
, так как экспонент. Числа быстро растут! Этот метод должен работать так же, как и файлы длиной до 7 букв, а также бит с более высокой скоростью при преобразовании в long
.
EDIT 2:
Чтобы отсортировать файлы в алфавитном порядке, вы можете просто использовать метод .Sort()
на List
как таковой:
public static List<string> GenerateSortedFileNames(int totalFiles)
{
List<string> names = new List<string>();
for (int i = 0; i < totalFiles; i++)
{
names.Add(GetString(i));
}
names.Sort();
return names;
}
Затем использовать его как это:
List<string> SortedNames = GenerateSortedFileNames(100);
foreach (string fileName in SortedNames)
{
Console.WriteLine(fileName);
}
//Outputs A,AA,AB,AC ... X,Y,Z
a, b, c, ..., z, aa, ab? –
Используя только буквы, вам нужно всего 5 символов, чтобы дать вам более 11 миллионов уникальных имен файлов, поэтому я бы начал с 'aaaaa',' aaaab', 'aaaac' и так далее. – DavidG
Почему так сложно? ** a **, ** aa **, ** aaa **, ..., ** aaa .... aaaa **, ... Нужно ли указывать файлы только с алфавитами или у них есть быть отсортированным в алфавитном порядке? Какая домашняя работа? – Santhos