如何在C#中只获取integer并删除所有字符串

本文关键字:删除 字符串 integer 获取 | 更新日期: 2023-09-27 17:59:10

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

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

我只需要得到(01)

如何在C#中只获取integer并删除所有字符串

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

有四种不同的方法(可能更多,但我已经选择了这些)。

#1:Bala R的Regex

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

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

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也是如此,但如果有很多迭代或者字符串长四倍或更多,#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+"将匹配一个或多个数字的序列。使用此模式从字符串中提取所有数字的一个简单方法如下:

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

所以你可以这样使用它:

List<int> result = ExtractInts("( 01 - ABCDEFG )");

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

查看此博客文章:http://weblogs.asp.net/sushilasb/archive/2006/08/03/How-to-extract-numbers-from-string.aspx

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

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);
                 }
             }