Tôi có dữ liệu đến từ trường nvarchar của cơ sở dữ liệu máy chủ SQL thông qua EF3.5. Chuỗi này được sử dụng để tạo Tên tệp và cần xóa các ký tự không hợp lệ và thử các tùy chọn sau nhưng không có tùy chọn nào hoạt động. Xin cho biết tại sao đây là một bí ẩn dễ hiểu? Tôi có làm gì sai không?C# Xóa các ký tự không hợp lệ khỏi tên tệp
Tôi đã sử dụng gần như tất cả các câu hỏi liên quan trên trang web này .. và hiện đang đăng câu hỏi tổng hợp từ tất cả các đề xuất/câu trả lời từ các câu hỏi tương tự khác.
UPD: Vấn đề không liên quan..Tất cả các tùy chọn này đều hoạt động. Vì vậy, đăng nó lên cộng đồng wiki.
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;
}
Ý anh là gì bởi "không ai trong số họ làm việc"? – RedFilter
chuỗi trả về vẫn chứa các ký tự không hợp lệ .. không có ký tự không hợp lệ nào được System.IO.Path.GetInvalidFileNameChars() trả về. – Bhuvan
Điều này được giải thích tốt nhất nếu bạn chỉ cho chúng ta một ví dụ về đầu vào không hoạt động. –