Concatenate neighboring characters of a special character "-"

Use:

string[] input = {
                        "A-B-C",
                        "AB-CD",
                        "ABC-D-E",
                        "AB-CD-K"
                    };

var regex = new Regex(@"\w(?=-)|(?<=-)\w", RegexOptions.Compiled);

var result = input.Select(s => string.Concat(regex.Matches(s)
    .Cast<Match>().Select(m => m.Value)));

foreach (var s in result)
{
    Console.WriteLine(s);
}

Output:

ABC
BC
CDE
BCDK

Untested, but this should do the trick, or at the very least lead you in the right direction.

private string Prepare(string input)
{
    StringBuilder output = new StringBuilder();
    char[] chars = input.ToCharArray();
    for (int i = 0; i < chars.Length; i++)
    {
        if (chars[i] == '-')
        {
            if (i > 0)
            {
                output.Append(chars[i - 1]);
            }
            if (++i < chars.Length)
            {
                output.Append(chars[i])
            }
            else
            {
                break;
            }
        }
    }
    return output.ToString();
}

If you want each pair to form a separate object in an array, try the following code:

private string[] Prepare(string input)
{
    List<string> output = new List<string>();
    char[] chars = input.ToCharArray();
    for (int i = 0; i < chars.Length; i++)
    {
        if (chars[i] == '-')
        {
            string o = string.Empty;
            if (i > 0)
            {
                o += chars[i - 1];
            }
            if (++i < chars.Length)
            {
                o += chars[i]
            }
            output.Add(o); 
        }
    }
    return output.ToArray();
}