2010-12-21 10 views
21

यह सुनिश्चित करने के लिए कि मैं संख्याओं, अक्षरों या स्थान को केवल यह सुनिश्चित करने के लिए स्ट्रिंग कैसे जांचूं?

उत्तर

41

सबसे आसान तरीका यह रेगुलर एक्सप्रेशन का उपयोग करने के लिए:

http://www.regular-expressions.info/dotnet.html

MSDN Regular Expression

Regex.IsMatch

:

Regular Expression for alphanumeric and underscores

.net में रेगुलर एक्सप्रेशन का उपयोग करना

var regexItem = new Regex("^[a-zA-Z0-9 ]*$"); 

if(regexItem.IsMatch(YOUR_STRING)){..} 
4
String test_string = "tesintg#[email protected]#"; 
if (System.Text.RegularExpressions.Regex.IsMatch(test_string, "^[a-zA-Z0-9\x20]+$")) 
{ 
    // Good-to-go 
} 

एक उदाहरण यहां पाया जा सकता: http://ideone.com/B1HxA

2

उपयोग में नीचे नियमित अभिव्यक्ति यकीन है कि यह संख्या, अक्षर, या केवल स्थान शामिल हैं बनाने के लिए एक स्ट्रिंग मान्य करने के लिए:

[a-zA-Z0-9 ] 
12
string s = @"$KUH% I*$)OFNlkfn$"; 
var withoutSpecial = new string(s.Where(c => Char.IsLetterOrDigit(c) 
              || Char.IsWhiteSpace(c)).ToArray()); 

if (s != withoutSpecial) 
{ 
    Console.WriteLine("String contains special chars"); 
} 
3

यदि स्वीकार्य पात्रों की सूची बहुत छोटी है, तो आप इस तरह की नियमित अभिव्यक्ति का उपयोग कर सकते हैं:

Regex.IsMatch(items, "[a-z0-9 ]+", RegexOptions.IgnoreCase); 

यहां उपयोग की जाने वाली नियमित अभिव्यक्ति एजे और 0-9 से किसी भी चरित्र को देखती है जिसमें एक स्पेस (स्क्वायर ब्रैकेट्स के अंदर क्या है]], कि इनमें से एक या अधिक वर्ण हैं (+ चिह्न - आप * 0 या अधिक के लिए * का उपयोग कर सकते हैं। अंतिम विकल्प रेगेक्स पार्सर को मामले को अनदेखा करने के लिए कहता है।

यह किसी भी पत्र, संख्या या स्थान पर असफल हो जाएगा। धन्य सूची में और वर्ण जोड़ने के लिए, इसे वर्ग ब्रैकेट के अंदर जोड़ें।

34

सरल:

function HasSpecialChars(string yourString) 
{ 
    return yourString.Any(ch => ! Char.IsLetterOrDigit(ch)) 
} 
+1

यह उत्तर क्यों उभरा नहीं है? मुझे सही और जल्दी लगता है। इस तरह की एक आसान समस्या –

+0

@MarcelloGrechiLins Regex संकलित रेगेक्स का उपयोग करते समय और इसे बड़े पैमाने पर स्ट्रिंग का उपयोग करते समय पुन: उपयोग करने के लिए पूरी तरह से वैध और संभवतः तेज है। सॉफ्टवेयर विकास के साथ सामान्य रूप से व्यापार-बंद होते हैं। :-) –

+0

मैं वास्तव में इसे वोट देना चाहता हूं - केवल न्यूनतम परीक्षण के साथ, यह \ n के लिए सच वापस लाता है, और मुझे संदेह है कि कोई भी इसे चाहता है। रेगेक्स कम से कम इसे वास्तविक विशेष वर्णों तक सीमित कर देगा। – Charles

3

इस तरह की कोशिश करो।

public static bool hasSpecialChar(string input) 
    { 
     string specialChar = @"\|!#$%&/()=?»«@£§€{}.-;'<>_,"; 
     foreach (var item in specialChar) 
     { 
      if (input.Contains(item)) return true; 
     } 

     return false; 
    } 
संबंधित मुद्दे