Если вам действительно нужно это сделать, не так сложно сгенерировать строки с помощью рекурсии. Вот фрагмент кода, который нужно сделать именно в Java:
public class Explode {
static void dfs(String prefix, String suffix) {
final int k = suffix.indexOf('[');
if (k == -1) {
System.out.println(prefix + suffix);
} else {
prefix += suffix.substring(0, k);
char from = suffix.charAt(k+1);
char to = suffix.charAt(k+3);
suffix = suffix.substring(k+5);
for (char ch = from; ch <= to; ch++) {
dfs(prefix + ch, suffix);
}
}
}
public static void main(String[] args) {
String template = "http://example.com/[a-c]/[0-2][x-z].htm";
dfs("", template);
}
}
( см. Полный вывод )
Это стандартный генератор рекурсивных кортежей, но с некоторой вставкой строк между ними. Это тривиально портировать на C #. Вы хотели бы использовать изменяемый StringBuilder
-подобный класс для лучшей производительности.