जवाबों:
निम्नलिखित अभिव्यक्ति का उपयोग करें:
^[a-zA-Z0-9]*$
अर्थात:
using System.Text.RegularExpressions;
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString)) {
...
}
.NET 4.0 में आप LINQ का उपयोग कर सकते हैं:
if (yourText.All(char.IsLetterOrDigit))
{
//just letters and digits.
}
yourText.Allfalseतब से पहली बार char.IsLetterOrDigitरिपोर्ट को निष्पादित करना और वापस करना बंद कर देगा falseक्योंकि तब अनुबंध Allपूरा नहीं किया जा सकता है।
ध्यान दें! यह उत्तर अल्फ़ान्यूमेरिक्स (जो आमतौर पर AZ, az और 0-9 है) की सख्ती से जाँच नहीं करता है। यह उत्तर स्थानीय पात्रों की तरह अनुमति देता है åäö।
अपडेट 2018-01-29
उपर्युक्त सिंटैक्स केवल तब काम करता है जब आप एक एकल विधि का उपयोग करते हैं जिसमें सही प्रकार का एक तर्क होता है (इस मामले में char)।
कई शर्तों का उपयोग करने के लिए, आपको इस तरह लिखना होगा:
if (yourText.All(x => char.IsLetterOrDigit(x) || char.IsWhiteSpace(x)))
{
}
char.IsLetterOrDigit('ก')वापस आ जाएगी true। csharppad.com/gist/f96a6062f9f8f4e974f222ce313df8ca
आप इसे regex के बजाय एक एक्सटेंशन फ़ंक्शन के साथ आसानी से कर सकते हैं ...
public static bool IsAlphaNum(this string str)
{
if (string.IsNullOrEmpty(str))
return false;
for (int i = 0; i < str.Length; i++)
{
if (!(char.IsLetter(str[i])) && (!(char.IsNumber(str[i]))))
return false;
}
return true;
}
प्रति टिप्पणी :) ...
public static bool IsAlphaNum(this string str)
{
if (string.IsNullOrEmpty(str))
return false;
return (str.ToCharArray().All(c => Char.IsLetter(c) || Char.IsNumber(c)));
}
char.IsLetterOrDigitकरने के बजाय IsLetter + ISNUMBER
जबकि मुझे लगता है कि रेगेक्स-आधारित समाधान शायद मैं जिस तरह से जाऊंगा, मैं इसे एक प्रकार से इनकैप्सुलेट करने के लिए लुभाऊंगा।
public class AlphaNumericString
{
public AlphaNumericString(string s)
{
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(s))
{
value = s;
}
else
{
throw new ArgumentException("Only alphanumeric characters may be used");
}
}
private string value;
static public implicit operator string(AlphaNumericString s)
{
return s.value;
}
}
अब, जब आपको एक वैध स्ट्रिंग की आवश्यकता होती है, तो आपके पास विधि हस्ताक्षर की आवश्यकता हो सकती है एक AlphaNumericString, और पता है कि यदि आप एक प्राप्त करते हैं, तो यह वैध है (नल के अलावा)। यदि कोई गैर-वैध स्ट्रिंग में पारित करने का प्रयास करता है, तो यह संकलक त्रुटि उत्पन्न करेगा।
आप कट्टरता प्राप्त कर सकते हैं और सभी समानता ऑपरेटरों को लागू कर सकते हैं, या यदि आप परवाह करते हैं, तो सादा ओएलआई स्ट्रिंग से अल्फ़ान्यूमेरिकस्ट्रीमिंग के लिए एक स्पष्ट डाली।
static public implicit operator stringभाग को समझने की कोशिश कर रहा हूँ
मुझे AZ, az, 0-9 की जांच करने की आवश्यकता थी; एक रेगेक्स के बिना (भले ही ओपी रेगेक्स पूछता है)।
यहां विभिन्न उत्तरों और टिप्पणियों को सम्मिश्रित करना, और https://stackoverflow.com/a/9975693/292060 से चर्चा , पत्र या अंक के लिए यह परीक्षण, अन्य भाषा के अक्षरों से बचना, और अंश वर्ण जैसे अन्य नंबरों से बचना।
if (!String.IsNullOrEmpty(testString)
&& testString.All(c => Char.IsLetterOrDigit(c) && (c < 128)))
{
// Alphanumeric.
}
^\w+$ अनुमति देगा a-zA-Z0-9_
^[a-zA-Z0-9]+$अंडरस्कोर को हटाने के लिए उपयोग करें ।
ध्यान दें कि इन दोनों को स्ट्रिंग को खाली नहीं होने की आवश्यकता है। खाली तारों *की +अनुमति के बजाय का उपयोग करना ।
^[\w-]+$
यह जांचने के लिए कि क्या स्ट्रिंग अक्षर और अंकों दोनों का संयोजन है, आप .NET 4.0 और LINQ का उपयोग करते हुए @jgauffin उत्तर को फिर से लिख सकते हैं:
if(!string.IsNullOrWhiteSpace(yourText) &&
yourText.Any(char.IsLetter) && yourText.Any(char.IsDigit))
{
// do something here
}
यहाँ भी वही जवाब ।
यदि आप एक गैर-रेगेक्स ASCII A-z 0-9जांच चाहते हैं, तो आप इसका उपयोग नहीं कर सकते हैं, char.IsLetterOrDigit()जिसमें अन्य यूनिकोड वर्ण शामिल हैं।
आप जो कर सकते हैं, वह वर्ण कोड श्रेणियों की जांच करना है।
निम्नलिखित थोड़ा अधिक क्रिया है, लेकिन यह कोड गोल्फ के बजाय समझने में आसानी के लिए है।
public static bool IsAsciiAlphaNumeric(this string str)
{
if (string.IsNullOrEmpty(str))
{
return false;
}
for (int i = 0; i < str.Length; i++)
{
if (str[i] < 48) // Numeric are 48 -> 57
{
return false;
}
if (str[i] > 57 && str[i] < 65) // Capitals are 65 -> 90
{
return false;
}
if (str[i] > 90 && str[i] < 97) // Lowers are 97 -> 122
{
return false;
}
if (str[i] > 122)
{
return false;
}
}
return true;
}
क्लेटस के उत्तर के आधार पर आप नया एक्सटेंशन बना सकते हैं।
public static class StringExtensions
{
public static bool IsAlphaNumeric(this string str)
{
if (string.IsNullOrEmpty(str))
return false;
Regex r = new Regex("^[a-zA-Z0-9]*$");
return r.IsMatch(str);
}
}
मैं .NET फ्रेमवर्क में तैयार किए गए और निर्मित कोड पर निर्भर नहीं होने की सलाह देता हूं, नए समाधान लाने की कोशिश करता हूं .. क्योंकि मैं क्या कर रहा हूं ..
public bool isAlphaNumeric(string N)
{
bool YesNumeric = false;
bool YesAlpha = false;
bool BothStatus = false;
for (int i = 0; i < N.Length; i++)
{
if (char.IsLetter(N[i]) )
YesAlpha=true;
if (char.IsNumber(N[i]))
YesNumeric = true;
}
if (YesAlpha==true && YesNumeric==true)
{
BothStatus = true;
}
else
{
BothStatus = false;
}
return BothStatus;
}
char.IsNumber()विधि का उपयोग नहीं करना चाहिए क्योंकि यह प्री-बिल्ट कोड है?