如何获取整数并删除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 .]"))));
这适用于int
和decimal
数字。
试试这个:
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); } }