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

  • Jonathan Morrison

    Jonathan Mor

    24 Mart 2010
  • TokShogun

    TokShogun

    6 HAZİRAN 2009
  • VOICE TV

    VOICE TV

    2 Aralık 2010