Reputation: 2288
I want to replace these characters with string.Empty:'"<>?*/\|
in given Filename
How to do that using Regex
I have tried this:
Regex r = new Regex("(?:[^a-z0-9.]|(?<=['\"]))", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
FileName = r.Replace(FileName, String.Empty);
but this replaces all special characters with String.Empty.
Upvotes: 2
Views: 5022
Reputation: 1039488
You could use the Regex.Replace method. It does what its name suggests.
Regex regex = new Regex(@"[\\'\\""\\<\\>\\?\\*\\/\\\\\|]");
var filename = "dfgdfg'\"<>?*/\\|dfdf";
filename = regex.Replace(filename, string.Empty);
But I'd rather sanitize it for all characters that are forbidden in a filename under the file system that you are currently using, not only the characters that you have defined in your regex because you might have forgotten something:
private static readonly char[] InvalidfilenameCharacters = Path.GetInvalidFileNameChars();
public static string SanitizeFileName(string filename)
{
return new string(
filename
.Where(x => !InvalidfilenameCharacters.Contains(x))
.ToArray()
);
}
and then:
var filename = SanitizeFileName("dfgdfg'\"<>?*/\\|dfdf");
Upvotes: 5
Reputation: 5540
look here how to do it:
How to remove illegal characters from path and filenames?
remember to use Path.GetInvalidFileNameChars()
Upvotes: 2