Figure code and uniform code merger
If I understood you correctly what you need is to make this method faster.
Firstly, you need to answer one simple question is that really what you NEED, this method does not look that time consuming at all (unless you have hundreads of elements in that string). Have you benchmarked it and saw that it consumes a lot of time? 

EDIT: it came to me that you might be asking about performance of your idea, if so - for me it looks good enough.

If you really need to make this method faster here is what I can see:

1. Do not use foreach loop. If you decided to make uniform.Split('.') a list take advantage of it. Change your loop to for

2. Do not use LINQ at all, it is known for being time consuming (since it enumerates everythingcall enumerator in every function).

partsToReplace.Any() &amp;&amp; !partsToReplace.Contains(part)


can be changed to for loop when you do Any by List.Count method and Contains by simply checking every element. Exactly the same thing is applicable to if (figure.Contains(part + "-")) and var indexOfItem = figureParts.ToList().FindIndex(value =&gt; value.StartsWith(part));

in the latter I think you do not need to make ToList() but I have no compiler at hand to check it.

Note
Those changes are micro optimalisations, if your application is slow it is probably because of some other part. Plase do propper benchmark to check this.

Also : I think there should be List&lt;string&gt; figureParts = figure.Split('.').ToList();