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

  • Pál Zoltán Illés

    Pál Zoltán

    30 NİSAN 2007
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007
  • trickycharms

    trickycharms

    6 Aralık 2013