C# c如何修剪字符串中的所有非数字字符

C# c如何修剪字符串中的所有非数字字符,c#,C#,修剪字符串中具有字母前缀的所有字母的最快方法是什么。 例如,输入stingabc12345,我只希望将12345作为输出。 谢谢。您必须使用正则表达式。看起来你只在寻找数字而不是字母 样本: string result = System.Text.RegularExpressions.Regex.Replace("Your input string", @"\D+", string.Empty); 可以使用修剪字母前缀 var input = "ABC123"; var

修剪字符串中具有字母前缀的所有字母的最快方法是什么。 例如,输入stingabc12345,我只希望将12345作为输出。
谢谢。

您必须使用正则表达式。看起来你只在寻找数字而不是字母

样本:

string result =
  System.Text.RegularExpressions.Regex.Replace("Your input string", @"\D+", string.Empty);
可以使用修剪字母前缀

var input = "ABC123";
var trimmed = Regex.Replace(input, @"^[A-Za-z]+", "");

// trimmed = "123"
replace方法的正则表达式第二个参数^[A-Za-z]+完成了大部分工作,它使用以下规则定义了要替换的内容:

^字符确保匹配只存在于字符串的开头 [A-Za-z]将匹配任何大小写字母 +表示一行中的大写或小写字母将尽可能多地匹配


因为这是Replace方法,所以第三个参数用空字符串替换任何匹配项。

其他答案似乎回答了最慢的方法。。因此,如果您确实需要最快的方法,那么您可以找到第一个数字的索引并获得子字符串:

string input = "ABC12345";
int i = 0;
while ( input[i] < '0' || input[i] > '9' ) i++;
string output = input.Substring(i);

请使用char.IsDigit,尝试以下操作:

static void Main(string[] args)
{
    var input = "ABC12345";
    var numeric = new String(input.Where(char.IsDigit).ToArray());
    Console.Read();
}

可能的转载。。。检查此链接:尝试删除所有非数字字符的链接。不仅仅是输入字符串开头的这些字符串。字符串结果=System.Text.RegularExpressions.Regex.ReplaceYour input string,@^\D+,string.Empty;只需将@\D+更改为@^\D+。这会更快。但是拥有char提供的附加功能可能很有用。IsNumber@moarboilerplate由于char.IsNumber有一些额外的unicode检查,因此速度会稍慢一些
static void Main(string[] args)
{
    var input = "ABC12345";
    var numeric = new String(input.Where(char.IsDigit).ToArray());
    Console.Read();
}