मैं रेगेक्स का उपयोग कर सी # में एक विंडोज़ पथ को प्रमाणित करने की कोशिश कर रहा हूं। इस जवाब के आधार पर मैं एक रेगेक्स लेकर आया हूं जो अनुमति देता है ड्राइव अक्षर और बिना पथ लेकिन यह रिक्त स्थान पर घुटता हुआ प्रतीत होता है।
कार्यक्रम:
public bool ValidatePath(string path)
{
Regex regex = new Regex(@"^(([a-zA-Z]:\\)|\\\\)(((?![<>:""/\\|? *]).)+((?<![ .])\\)?)*$");
return regex.IsMatch(path);
}
जो मेरे सभी परीक्षण मामलों के लिए काम करता है सिवाय उस मामले को छोड़कर जहां फ़ाइल नाम में रिक्त स्थान हैं:
[Test]
[TestCase(@"c:\", true)]
[TestCase(@"\\server\filename", true)]
[TestCase(@"\\server\filename with space", true)] //fails
[TestCase(@"\\server\filename\{token}\file", true)]
[TestCase(@"zzzzz", false)]
public void BadPathTest(string path, bool expected)
{
ValidatePath(path).Should().Be(expected);
}
मैं इसे फ़ाइल नामों में रिक्त स्थान की अनुमति देने के लिए कैसे प्राप्त करूं, मैं अपने जीवन के लिए यह नहीं देख सकता कि इसे कहां जोड़ना है?
2 जवाब
आप इसे पहले से ही .NET फ्रेमवर्क में उरी बनाकर और उरी.IsUnc प्रॉपर्टी।
Uri uncPath = new Uri(@"\\my\unc\path");
Console.WriteLine(uncPath.IsUnc);
इसके अलावा आप देख सकते हैं कि इसे संदर्भ स्रोत में कैसे लागू किया जाता है।
विंडोज़ कुछ वर्णों को अस्वीकार करता है:
यहां निर्दिष्ट: Microsoft डॉक्स: नामकरण फ़ाइलें, पथ, और नाम स्थान
तो यहाँ UNC के लिए एक बहिष्करण आधार नियमित अभिव्यक्ति है
(\\\\([a-z|A-Z|0-9|-|_|\s]{2,15}){1}(\.[a-z|A-Z|0-9|-|_|\s]{1,64}){0,3}){1}(\\[^\\|\/|\:|\*|\?|"|\<|\>|\|]{1,64}){1,}(\\){0,}
संबंधित सवाल
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।
^(?:[a-zA-Z]:\\|\\\\)(?>[^\r\n<>:"/\\|?*]+(?:(?<![\s.])\\)?)+$
. फिर भी, इसके लिए सही टूल का इस्तेमाल करें।