我需要使用 Regex.Replace删除字符串中的所有数字和符号。
Regex.Replace
示例输入: 123- abcd33 示例输出: abcd
123- abcd33
abcd
Try the following:
var output = Regex.Replace(input, @"[\d-]", string.Empty);
The \d identifier simply matches any digit character.
\d
var result = Regex.Replace("123- abcd33", @"[0-9\-]", string.Empty);
You can do it with a LINQ like solution instead of a regular expression:
string input = "123- abcd33"; string chars = new String(input.Where(c => c != '-' && (c < '0' || c > '9')).ToArray());
A quick performance test shows that this is about five times faster than using a regular expression.
As a string extension:
public static string RemoveIntegers(this string input) { return Regex.Replace(input, @"[\d-]", string.Empty); }
Usage:
"My text 1232".RemoveIntegers(); // RETURNS "My text "
the best design is:
Blow codes could help you...
Fetch Numbers:
return string.Concat(input.Where(char.IsNumber));
Fetch Letters:
return string.Concat(input.Where(char.IsLetter));
text= re.sub('[0-9\n]',' ',text)
install regex in python which is re then do the following code.
Different methods and which is the fastest if you have 100000 iterations to do.
Code:
Stopwatch sw = new Stopwatch(); var maxIterations = 100000; Console.WriteLine(@"Removing digits from string: ""1mir1112211a3bc9"" with Total {0}x iterations ",maxIterations); Console.WriteLine("\nReplace Operations"); sw.Start(); var str = "1mir1112211a3bc9"; for (int i = 1; i <= maxIterations; i++) { str = "1mir1112211a3bc9"; str = str.Replace("1", "") .Replace("2", "") .Replace("3", "") .Replace("4", "") .Replace("5", "") .Replace("6", "") .Replace("7", "") .Replace("8", "") .Replace("9", "") .Replace("0", ""); } sw.Stop(); Console.WriteLine("Finalstring: " + str); Console.WriteLine("Elapsed time: " + sw.Elapsed.TotalMilliseconds + " Milliseconds"); sw.Reset(); //list for and if Console.WriteLine("\nList Operations:"); sw.Start(); var str2 = "1mir1112211a3bc9"; var listOfchars = new List<char>(); for (int i = 1; i <= maxIterations; i++) { str2 = "1mir1112211a3bc9"; for (int j = 0; j < str2.Length; j++) { if( !(char.IsDigit(str2[j]))) listOfchars.Add(str2[j]); } str2 = new string(listOfchars.ToArray()); listOfchars.Clear(); } sw.Stop(); Console.WriteLine("Finalstring: " + str2); Console.WriteLine("Elapsed time: " + sw.Elapsed.TotalMilliseconds + " Milliseconds"); sw.Reset(); //LINQ Console.WriteLine("\nLINQ Operations"); sw.Start(); var str1 = "1mir1112211a3bc9"; for (int i = 1; i <= maxIterations; i++) { str1 = "1mir1112211a3bc9"; str1 = String.Concat(str1.Where(c => c != '-' && (c < '0' || c > '9')) ); } sw.Stop(); Console.WriteLine("Finalstring: " + str1); Console.WriteLine("Elapsed time: " + sw.Elapsed.TotalMilliseconds + " Milliseconds"); //Regex sw.Reset(); Console.WriteLine("\nRegex Operations"); sw.Start(); var str3 = "1mir1112211a3bc9"; for (int i = 1; i <= maxIterations; i++) { str3 = "1mir1112211a3bc9"; str3 = Regex.Replace(str3, @"[\d-]", string.Empty); } sw.Stop(); Console.WriteLine("Finalstring: " + str3); Console.WriteLine("Elapsed time: " + sw.Elapsed.TotalMilliseconds + " Milliseconds");
Here are the Results:
Removing digits from string: "1mir1112211a3bc9" with Total 100000x iterations
Replace Operations Finalstring: mirabc Elapsed time: 37,8307 Milliseconds
List Operations: Finalstring: mirabc Elapsed time: 16,7803 Milliseconds
LINQ Operations Finalstring: mirabc Elapsed time: 34,5803 Milliseconds
Regex Operations Finalstring: mirabc Elapsed time: 252,1907 Milliseconds