Find all possible combinations of word with and without hyphens

Viewed 1720

For a string that may have zero or more hyphens in it, I need to extract all the different possibilities with and without hyphens.

For example, the string "A-B" would result in "A-B" and "AB" (two possibilities).

The string "A-B-C" would result in "A-B-C", "AB-C", "A-BC" and "ABC" (four possibilities).

The string "A-B-C-D" would result in "A-B-C-D", "AB-C-D", "A-BC-D", "A-B-CD", "AB-CD", "ABC-D", "A-BCD" and "ABCD" (eight possibilities).

...etc, etc.

I've experimented with some nested loops but haven't been able to get anywhere near the desired result. I suspect I need something recursive unless there is some simple solution I am overlooking.

NB. This is to build a SQL query (shame that SQL Server does't have MySQL's REGEXP pattern matching).

Here is one attempt I was working on. This might work if I do this recursively.

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 are words of varying length.

5 Answers
Related