Попробуйте следующее
public string MakeValidFileName(string name) {
var builder = new StringBuilder();
var invalid = System.IO.Path.GetInvalidFileNameChars();
foreach ( var cur in name ) {
if ( !invalid.Contains(cur) ) {
builder.Append(cur);
}
}
return builder.ToString();
}
Если вы ищете "лаконичный", когда говорите простой:
public string StripInvalidChars(string filename) {
return new String(
filename.Except(System.IO.Path.GetInvalidFileNameChars()).ToArray()
);
}
Тем не менее, я бы выбрал решение JaredPar. Его, вероятно, легче читать (в зависимости от вкуса, фона), моя интуиция подсказывает, что оно более эффективно (хотя я не уверен, насколько эффективно вы должны вычеркивать дюжину недопустимых символов из имени файла ограниченной длины), и его использование StringBuilder() кажется идеально подходящим к вашему примеру.