如何获取整数并删除C#中的所有字符串

如何删除字符串并仅获取整数?

我有一个字符串(01 – ABCDEFG)

我只需要获得(01)

input = Regex.Replace(input, "[^0-9]+", string.Empty); 

有四种不同的方法可以做到(很可能更多,但我选择了这些)。

#1:来自Bala R的正则表达式

 string output = Regex.Replace(input, "[^0-9]+", string.Empty); 

#2:来自Donut的regex和agent-j

 string output = Regex.Match(input, @"\d+").Value; 

#3:Linq

 string output = new string(input.ToCharArray().Where(c => char.IsDigit(c)).ToArray()); 

#4:子串 ,为此工作,破折号必须在数字和文本之间的字符串中。

 string output = input.Substring(0, input.IndexOf("-")).Replace(" ", ""); 

有了这些输入:

 string input1 = "01 - ABCDEFG"; string input2 = "01 - ABCDEFG123"; 

对于1和2,结果将是:

 output1 = "01"; output2 = "01123"; 

对于3和4,结果将是:

 output1 = "01"; output2 = "01"; 

如果预期结果是获取字符串中的所有数字,请使用#1或#2,但如果预期结果仅是获取破折号之前的数字,请使用#3或#4。

字符串短,#1和#2的速度大致相同,#3和#4也相同,但如果有很多次迭代或字符串长4倍或更多#2比#1快#4比#3快。

注意:如果括号中包含括号,则必须修改#4,但这不会使速度慢得多:

 string output = input.Substring(0, input.IndexOf("-")).Replace(" ", "").Replace("(", ""); 

试试这个:

 Convert.ToInt32(string.Join(null, System.Text.RegularExpressions.Regex.Split(s, "[^\\d]"))) 

它返回整数值1。

 string snum = System.Text.RegularExpression.Regex.Match(s, "\d+").Value; int num; if (!int.TryParse(snum, out num)) throw new Exception(); 

您应该使用正则表达式 – 它们是一种非常强大的方法来匹配某些模式的文本字符串,这是一个使用它们的好方案。

模式“ \d+ ”将匹配1位或更多位的序列。 使用此模式从字符串中提取所有数字的简单方法如下:

 public static List ExtractInts(string input) { return Regex.Matches(input, @"\d+") .Cast() .Select(x => Convert.ToInt32(x.Value)) .ToList(); } 

所以你可以像这样使用它:

 List result = ExtractInts("( 01 - ABCDEFG )"); 

有关正则表达式的更多详细信息,请参阅此页面(MSDN)或此页面(有用的“备忘单”) 。

看看这篇博文: http : //weblogs.asp.net/sushilasb/archive/2006/08/03/How-to-extract-numbers-from-string.aspx

一个简单的程序,使用正则表达式从String中提取数字。

 class Program { static void Main(string[] args) { Console.WriteLine(ExtractNumbers("( 01 - ABCDEFG )")); // 01 Console.ReadLine(); } static string ExtractNumbers(string expr) { return string.Join(null, System.Text.RegularExpressions.Regex.Split(expr, "[^\\d]")); } } 

希望这可以帮助!

从字符串中获取所有数字

 string str = "01567438absdg34590"; string result = ""; result = Regex.Replace(str, @"[^\d]", ""); Console.WriteLine(result); Console.Read(); 

输出:0156743834590

 Response.Write(Convert.ToDecimal(string.Join(null, System.Text.RegularExpressions.Regex.Split(TextBox1.Text, "[^\\d .]")))); 

这适用于intdecimal数字。

试试这个:

 string XYZ = string.Join(null, System.Text.RegularExpressions.Regex.Split(“XYZ 77”, “[^\d]”)); 

您也可以使用这种方式获得适当的答案..

 string sentence = "10 cats, 20 dogs, 40 fish and 1 programmer"; string[] digits= Regex.Split(sentence, @"\D+"); foreach (string value in digits) { int number; if (int.TryParse(value, out number)) { Debug.Log(value); } }