繁体   English   中英

修剪字符串中的所有非数字字符

[英]c# How do trim all non numeric character in a string

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

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

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

您可以使用正则表达式来修剪字母前缀

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

获取值的最短方法可能是VB Val方法:

double value = Microsoft.VisualBasic.Conversion.Val("ABC12345"); // 12345.0

您将不得不正则表达式。 似乎您只在寻找数字而不是字母。

样品:

string result =
  System.Text.RegularExpressions.Regex.Replace("Your input string", @"\D+", string.Empty);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM