在字符串中修剪具有字母前缀的所有字母表的更快方法是什么。 例如,输入sting“ABC12345”,我希望仅将12345作为输出。 感谢。
答案 0 :(得分:5)
请使用“char.IsDigit”,试试这个:
static void Main(string[] args)
{
var input = "ABC12345";
var numeric = new String(input.Where(char.IsDigit).ToArray());
Console.Read();
}
答案 1 :(得分:2)
您可以使用Regular Expressions修剪字母前缀
var input = "ABC123";
var trimmed = Regex.Replace(input, @"^[A-Za-z]+", "");
// trimmed = "123"
replace方法的正则表达式(第二个参数)^[A-Za-z]+
执行大部分工作,它使用以下规则定义要替换的内容:
^
字符确保匹配仅存在于字符串的开头
[A-Za-z]
将匹配任何大写或小写字母
+
表示大写或小写字母将尽可能多次匹配
由于这是Replace
方法,因此第三个参数用空字符串替换任何匹配。
答案 2 :(得分:2)
其他答案似乎回答了什么是最慢的方式..所以如果你真的需要最快的方法,那么你可以找到第一个数字的索引并得到子字符串:
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
答案 3 :(得分:0)
你必须要正则表达式。看来你只是在找数字而不是字母。
样品:
string result =
System.Text.RegularExpressions.Regex.Replace("Your input string", @"\D+", string.Empty);