Для строки, которая может иметь ноль или более дефисов, мне нужно извлечь всевозможные возможности с помощью дефисов и без них.Найти все возможные комбинации слов с дефисом и без них
Например, строка «A-B» приведет к «A-B» и «AB» (две возможности).
Строка «A-B-C» приведет к «A-B-C», «AB-C», «A-BC» и «ABC» (четыре возможности).
Строка «ABCD» приведет к «ABCD», «AB-CD», «A-BC-D», «AB-CD», «AB-CD», «ABC-D», «A -BCD "и" ABCD "(восемь возможностей).
... и т.д., и т.д.
Я экспериментировал с некоторыми вложенными циклами, но не был в состоянии получить в любом месте вблизи желаемого результата. Я подозреваю, что мне нужно что-то рекурсивное, если нет какого-то простого решения, которое я пропускаю.
NB. Это необходимо для создания SQL-запроса (стыдно, что SQL Server не имеет соответствия шаблону REGEXP MySQL).
Вот одна попытка, над которой я работал. Это может сработать, если я сделаю это рекурсивно.
string keyword = "A-B-C-D";
List<int> hyphens = new List<int>();
int pos = keyword.IndexOf('-');
while (pos != -1)
{
hyphens.Add(pos);
pos = keyword.IndexOf('-', pos + 1);
}
for (int i = 0; i < hyphens.Count(); i++)
{
string result = keyword.Substring(0, hyphens[i]) + keyword.Substring(hyphens[i] + 1);
Response.Write("<p>" + result);
}
A B C D - слова различной длины.
Посмотрите на Combinatorics - пакет nuget (и исходный код) для вычисления перестановок и комбинаций. –
Для ввода '' A-B-C-D '' Как '' AB-BC '' будет выход? почему 'D' является мимином –
@ un-lucky - спасибо, это была опечатка – johna