using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Globalization; public class Test { public static void Main() { var strings = new List { "Van Den Broek", "Derksen-van 't schip", "In Het Lid-Van De Boer"}; var textInfo = new CultureInfo("en-US", false).TextInfo; var pattern = new Regex(@"\b(Van|Den|Der|In|de|het)\b(?:\s+(\w+))?", RegexOptions.Compiled|RegexOptions.IgnoreCase); foreach (var s in strings) Console.WriteLine(pattern.Replace(s, m => textInfo.ToTitleCase(m.Groups[1].Value) + (m.Groups[2].Success ? $" {m.Groups[2].Value.ToLower()}" : ""))); } }