SORU
28 EYLÜL 2008, Pazar


Nasıl bir yol ve dosya adları geçersiz karakterler kaldırmak için?

Sağlam ve basit bir şekilde basit bir dize için bir yol ve dosya geçersiz karakterleri kaldırmak istiyorum. Aşağıdaki kodu kullandım ama hiçbir işe yaramıyor, ben ne eksik?

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string illegal = "\"M<>\"\\a/ry/ h**ad:>> a\\/:*?\"<>| li*tt|le|| la\"mb.?";

            illegal = illegal.Trim(Path.GetInvalidFileNameChars());
            illegal = illegal.Trim(Path.GetInvalidPathChars());

            Console.WriteLine(illegal);
            Console.ReadLine();
        }
    }
}

CEVAP
28 EYLÜL 2008, Pazar


Bunun yerine gibi bir şey deneyin

string illegal = "\"M\"\\a/ry/ h**ad:>> a\\/:*?\"| li*tt|le|| la\"mb.?";
string invalid = new string(Path.GetInvalidFileNameChars())   new string(Path.GetInvalidPathChars());

foreach (char c in invalid)
{
    illegal = illegal.Replace(c.ToString(), ""); 
}

Ama yorumlara katılıyorum, muhtemelen ama muhtemelen yasal istenmeyen bir yasadışı bir yol kırmaya denemek yerine, yasadışı yollardan kaynağı ile başa çıkmak için denemek istiyorum.

Edit: Ya da potansiyel olarak 'daha iyi' bir çözüm, Düzenli ifade kullanarak.

string illegal = "\"M\"\\a/ry/ h**ad:>> a\\/:*?\"| li*tt|le|| la\"mb.?";
string regexSearch = new string(Path.GetInvalidFileNameChars())   new string(Path.GetInvalidPathChars());
Regex r = new Regex(string.Format("[{0}]", Regex.Escape(regexSearch)));
illegal = r.Replace(illegal, "");

Hala bir soru ilk etapta bunu neden yaptığını sormuş olmak için çırpınıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amir Parmar

    Amir Parmar

    25 Kasım 2010
  • Lena Danya

    Lena Danya

    11 NİSAN 2010
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010