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

  • Deany Boii

    Deany Boii

    27 Kasım 2007
  • lifeisforsharingDT

    lifeisforsha

    18 Mayıs 2011
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008