Say I have a string containing numbers and other chars.
I want to reduce the string to numbers only.
F.e. from 23232-2222-d23231 to 23232222223231
Can this be done with string.replace()?
if not, what's the simplest and shortest way?
10x!
Say I have a string containing numbers and other chars.
I want to reduce the string to numbers only.
F.e. from 23232-2222-d23231 to 23232222223231
Can this be done with string.replace()?
if not, what's the simplest and shortest way?
10x!
There are a bunch of possibilities, from Regular Expressions to handling the text yourself. I'd go for this:
Regex.Replace(input, @"\D+", "")
Well, you will get about 874355876234857 answers with String.Replace and Regex.Replace, so here's a LINQ solution:
code = new String((from c in code where Char.IsDigit(c) select c).ToArray());
Or using extension methods:
code = new String(code.Where(c => Char.IsDigit(c)).ToArray());
Yes you can use String.replace but it would be wiser to use regex so that you can match a lot more criteria with a lot less effort.
The best way would be to user Regular Expressions. You example would be:
RegEx.Replace("23232-2222-d23231", "\\D+", "");
Regular expressions, as sampled, are the simplest and shortest.
I wonder if below would be faster?
string sample = "23232-2222-d23231";
StringBuilder resultBuilder = new StringBuilder(sample.Length);
char c;
for (int i = 0; i < sample.Length; i++)
{
c = sample[i];
if (c >= '0' && c <= '9')
{
resultBuilder.Append(c);
}
}
Console.WriteLine(resultBuilder.ToString());
Console.ReadLine();
guessing it would depend on a few things, including string length.
The simplest would be to use Replace.
string test = "23232-2222-d23231";
string newString = test.Replace("-","").Replace("d","");
But using REGEX would be better, but tougher.
It is not (easily) possible with string.Replace()
. The simplest solution is the following function/code:
public string GetDigits(string input)
{
Regex r = new Regex("[^0-9]+");
return r.Replace(input, "");
}
I would use a regular expression.
See this post Regex for numbers only
You can use a simple extension method:
public static string OnlyDigits(this string s)
{
if (s == null)
throw new ArgumentNullException("null string");
StringBuilder sb = new StringBuilder(s.Length);
foreach (var c in s)
{
if (char.IsDigit(c))
sb.Append(c);
}
return sb.ToString();
}
Try
string str="23232-2222-d23231";
str=Regex.Replace(str, @"\D+", String.Empty);
You can use a regular expression.
string str = "sdfsdf99393sdfsd";
str = Regex.Replace(str, @"[a-zA-Z _\-]", "");
I've used this to return only numbers in a string before.