public string TransformFile(string name)
{
if (name != null) {
string lowerName = name.ToLower();
if ((trimPrefix_ != null) && (lowerName.IndexOf(trimPrefix_, StringComparison.Ordinal) == 0)) {
name = name.Substring(trimPrefix_.Length);
}
name = name.Replace(@"\", "/");
name = WindowsPathUtils.DropPathRoot(name);
// Drop any leading slashes.
while ((name.Length > 0) && (name[0] == '/')) {
name = name.Remove(0, 1);
}
// Drop any trailing slashes.
while ((name.Length > 0) && (name[name.Length - 1] == '/')) {
name = name.Remove(name.Length - 1, 1);
}
// Convert consecutive // characters to /
int index = name.IndexOf("//", StringComparison.Ordinal);
while (index >= 0) {
name = name.Remove(index, 1);
index = name.IndexOf("//", StringComparison.Ordinal);
}
name = MakeValidName(name, '_');
} else {
name = string.Empty;
}
return name;
}