Try something like this:
string fileName = "something";
foreach (char c in System.IO.Path.GetInvalidFileNameChars())
{
fileName = fileName.Replace(c, '_');
}
Edit: since GetInvalidFileNameChars()Edit:
Since GetInvalidFileNameChars() will return 10 or 15 chars, it's better to use a StringBuilderStringBuilder instead of a simple string; the original version will take longer and consume more memory.