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

  • Hot For Nutrition

    Hot For Nutr

    26 ŞUBAT 2007
  • Joseph Herscher

    Joseph Hersc

    14 Mart 2007
  • NPR

    NPR

    22 NİSAN 2006