Change in string some part, but without one part where are numbers

For example I have such string:

ex250-r-ninja-08-10r_

how could I change it to such string?

ex250 r ninja 08-10r_

as you can see I change all - to space, but didn't change it where I have XX-XX part... how could I do such string replacement in c# ? (also string could be different length)

I do so for -

string correctString = errString.Replace("-", " ");

but how to left - where number pattern XX-XX ?

Jon Skeet
people
quotationmark

You can use regular expressions to only perform substitutions in certain cases. In this case, you want to perform a substitution if either side of the dash is a non-digit. That's not quite as simple as it might be, but you can use:

string ReplaceSomeHyphens(string input)
{
    string result = Regex.Replace(input, @"(\D)-", "${1} ");
    result = Regex.Replace(result, @"-(\D)", " ${1}");
    return result;
}

It's possible that there's a more cunning way to do this in a single regular expression, but I suspect that it would be more complicated too :)

people

See more on this question at Stackoverflow