public static string ChangeExtension (string path, string extension)
{
if (path == null)
return null;
if (path.IndexOfAny (InvalidPathChars) != -1)
throw new ArgumentException ("Illegal characters in path.");
int iExt = findExtension (path);
if (extension == null)
return iExt < 0 ? path : path.Substring (0, iExt);
else if (extension.Length == 0)
return iExt < 0 ? path + '.' : path.Substring (0, iExt + 1);
else if (path.Length != 0) {
if (extension.Length > 0 && extension [0] != '.')
extension = "." + extension;
} else
extension = String.Empty;
if (iExt < 0) {
return path + extension;
} else if (iExt > 0) {
string temp = path.Substring (0, iExt);
return temp + extension;
}
return extension;
}