जवाबों:
[^a-zA-Z0-9 -]
एक खाली स्ट्रिंग के साथ बदलें ।
Regex rgx = new Regex("[^a-zA-Z0-9 -]");
str = rgx.Replace(str, "");
replaceAll
बजाय एक समारोह के लिए देखो replace
।
return Regex.Replace(str, "[^a-zA-Z0-9_.]+", "", RegexOptions.Compiled);
एक ही मूल प्रश्न
""
और string.Empty
बिल्कुल वैसा ही। stackoverflow.com/questions/151472/…
मैं RegEx का उपयोग कर सकता था, वे सुरुचिपूर्ण समाधान प्रदान कर सकते हैं लेकिन वे प्रदर्शन संबंधी मुद्दों का कारण बन सकते हैं। यहाँ एक उपाय है
char[] arr = str.ToCharArray();
arr = Array.FindAll<char>(arr, (c => (char.IsLetterOrDigit(c)
|| char.IsWhiteSpace(c)
|| c == '-')));
str = new string(arr);
कॉम्पैक्ट फ्रेमवर्क का उपयोग करते समय (जिसमें FindAll नहीं है)
FindAll को 1 से बदलें
char[] arr = str.Where(c => (char.IsLetterOrDigit(c) ||
char.IsWhiteSpace(c) ||
c == '-')).ToArray();
str = new string(arr);
char[] arr = str.Where(c => (char.IsLetterOrDigit(c) || char.IsWhiteSpace(c) || c == '-')).ToArray();
तुम कोशिश कर सकते हो:
string s1 = Regex.Replace(s, "[^A-Za-z0-9 -]", "");
s
तुम्हारा तार कहाँ है
System.Linq का उपयोग करना
string withOutSpecialCharacters = new string(stringWithSpecialCharacters.Where(c =>char.IsLetterOrDigit(c) || char.IsWhiteSpace(c) || c == '-').ToArray());
रेगेक्स है [^\w\s\-]*
:
\s
स्थान के बजाय उपयोग करना बेहतर है ( ), क्योंकि पाठ में एक टैब हो सकता है।
इस प्रश्न के उत्तर के आधार पर, मैंने एक स्थिर वर्ग बनाया और इन्हें जोड़ा। सोचा कि यह कुछ लोगों के लिए उपयोगी हो सकता है।
public static class RegexConvert
{
public static string ToAlphaNumericOnly(this string input)
{
Regex rgx = new Regex("[^a-zA-Z0-9]");
return rgx.Replace(input, "");
}
public static string ToAlphaOnly(this string input)
{
Regex rgx = new Regex("[^a-zA-Z]");
return rgx.Replace(input, "");
}
public static string ToNumericOnly(this string input)
{
Regex rgx = new Regex("[^0-9]");
return rgx.Replace(input, "");
}
}
तब विधियों का उपयोग इस प्रकार किया जा सकता है:
string example = "asdf1234!@#$";
string alphanumeric = example.ToAlphaNumericOnly();
string alpha = example.ToAlphaOnly();
string numeric = example.ToNumericOnly();
कुछ जल्दी चाहिए?
public static class StringExtensions
{
public static string ToAlphaNumeric(this string self, params char[] allowedCharacters)
{
return new string(Array.FindAll(self.ToCharArray(), c => char.IsLetterOrDigit(c) || allowedCharacters.Contains(c)));
}
}
यह आपको यह निर्दिष्ट करने की अनुमति देगा कि आप किन पात्रों को अनुमति देना चाहते हैं।
यहाँ एक गैर-रेगेक्स हीप आवंटन अनुकूल तेज समाधान है जो मैं देख रहा था।
असुरक्षित संस्करण।
public static unsafe void ToAlphaNumeric(ref string input)
{
fixed (char* p = input)
{
int offset = 0;
for (int i = 0; i < input.Length; i++)
{
if (char.IsLetterOrDigit(p[i]))
{
p[offset] = input[i];
offset++;
}
}
((int*)p)[-1] = offset; // Changes the length of the string
p[offset] = '\0';
}
}
और उन लोगों के लिए जो असुरक्षित उपयोग नहीं करना चाहते हैं या स्ट्रिंग की लंबाई हैक पर भरोसा नहीं करते हैं।
public static string ToAlphaNumeric(string input)
{
int j = 0;
char[] newCharArr = new char[input.Length];
for (int i = 0; i < input.Length; i++)
{
if (char.IsLetterOrDigit(input[i]))
{
newCharArr[j] = input[i];
j++;
}
}
Array.Resize(ref newCharArr, j);
return new string(newCharArr);
}
प्रेरणा के रूप में @ उत्तर का उपयोग करके एक विस्तार विधि यहां दी गई है।
"hello-world123, 456".MakeAlphaNumeric(new char[]{'-'});// yields "hello-world123456"
या यदि आपको हाइफ़न के अलावा अतिरिक्त वर्णों की आवश्यकता है ...
"hello-world123, 456!?".MakeAlphaNumeric(new char[]{'-','!'});// yields "hello-world123456!"
public static class StringExtensions
{
public static string MakeAlphaNumeric(this string input, params char[] exceptions)
{
var charArray = input.ToCharArray();
var alphaNumeric = Array.FindAll<char>(charArray, (c => char.IsLetterOrDigit(c)|| exceptions?.Contains(c) == true));
return new string(alphaNumeric);
}
}
मैं यहाँ एक उत्तर की भिन्नता का उपयोग करता हूँ। मैं रिक्त स्थान को "-" के साथ बदलना चाहता हूं ताकि इसका SEO फ्रेंडली हो और लोअर केस भी बना सके। मेरी सेवाओं की परत से भी system.web संदर्भ नहीं।
private string MakeUrlString(string input)
{
var array = input.ToCharArray();
array = Array.FindAll<char>(array, c => char.IsLetterOrDigit(c) || char.IsWhiteSpace(c) || c == '-');
var newString = new string(array).Replace(" ", "-").ToLower();
return newString;
}
यहाँ एक बहुत ही संस्करण है
myString = myString.replace(/[^A-Za-z0-9 -]/g, "");
रेगेक्स के साथ एक बहुत आसान तरीका है।
private string FixString(string str)
{
return string.IsNullOrEmpty(str) ? str : Regex.Replace(str, "[\\D]", "");
}
-
एक वर्ग के लिए इस्तेमाल होने से रोकने के लिए वर्थ उल्लेख, जो चरित्र वर्ग के अंत में होना चाहिए, या बैकस्लैश के साथ बच गया।