Mam dane pochodzące z pola nvarchar bazy danych serwera SQL za pośrednictwem EF3.5. Ten ciąg służy do utworzenia nazwy pliku i trzeba usunąć nieprawidłowe znaki i wypróbować następujące opcje, ale żaden z nich nie działa. Proszę zasugerować, dlaczego jest to tak zrozumiała zagadka? Czy robię coś złego?C# Usuń nieprawidłowe znaki z nazwy pliku
Przeszedłem prawie wszystkie powiązane pytania na tej stronie .. i teraz publikuję skonsolidowane pytanie ze wszystkich sugestii/odpowiedzi z innych podobnych pytań.
UPD: Problem nie był związany. Wszystkie z tych opcji działają. Wpisując go na wiki społeczności.
public static string CleanFileName1(string filename)
{
string file = filename;
file = string.Concat(file.Split(System.IO.Path.GetInvalidFileNameChars(), StringSplitOptions.RemoveEmptyEntries));
if (file.Length > 250)
{
file = file.Substring(0, 250);
}
return file;
}
public static string CleanFileName2(string filename)
{
var builder = new StringBuilder();
var invalid = System.IO.Path.GetInvalidFileNameChars();
foreach (var cur in filename)
{
if (!invalid.Contains(cur))
{
builder.Append(cur);
}
}
return builder.ToString();
}
public static string CleanFileName3(string filename)
{
string regexSearch = string.Format("{0}{1}",
new string(System.IO.Path.GetInvalidFileNameChars()),
new string(System.IO.Path.GetInvalidPathChars()));
Regex r = new Regex(string.Format("[{0}]", Regex.Escape(regexSearch)));
string file = r.Replace(filename, "");
return file;
}
public static string CleanFileName4(string filename)
{
return new String(filename.Except(System.IO.Path.GetInvalidFileNameChars()).ToArray());
}
public static string CleanFileName5(string filename)
{
string file = filename;
foreach (char c in System.IO.Path.GetInvalidFileNameChars())
{
file = file.Replace(c, '_');
}
return file;
}
Co masz na myśli przez „żaden z nich nie działa”? – RedFilter
Zwrócony ciąg nadal zawiera nieprawidłowe znaki .. brak nieprawidłowych znaków zwracanych przez System.IO.Path.GetInvalidFileNameChars() jest usuwany. – Bhuvan
Najlepiej to wyjaśnić, jeśli pokażesz nam przykład niedziałających danych wejściowych. –