C# 从后面修剪字符串并转换为整数

C# 从后面修剪字符串并转换为整数,c#,.net,C#,.net,例如,我有字符串 var str = "1,203cars"; 我想把这个数字转换成整数(去掉这个奇怪的逗号分隔符)并去掉汽车。我知道我应该使用String.Trim()方法,但我不知道如何在不丢失数据的情况下从后面修剪和移除车辆,并将1203转换为1203。使用Linq技巧: var result = int.Parse(new string(str.Where(char.IsDigit).ToArray())); 或者,由于char.IsDigit对所有unicode数字都返回true,

例如,我有字符串

var str = "1,203cars";

我想把这个数字转换成整数(去掉这个奇怪的逗号分隔符)并去掉汽车。我知道我应该使用
String.Trim()
方法,但我不知道如何在不丢失数据的情况下从后面修剪和移除车辆,并将
1203
转换为
1203

使用Linq技巧:

var result = int.Parse(new string(str.Where(char.IsDigit).ToArray()));
或者,由于char.IsDigit对所有unicode数字都返回true,因此这里有一个更合适的解决方案:

var numbers = new [] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

var result = int.Parse(new string(str.Where(numbers.Contains).ToArray()));

您可以使用正则表达式从字符串的开头获取数字(这将在字符串的后面省去任何数字),然后删除分隔符

例如:

string str = "1,203cars then 703bikes";

string num = Regex.Match(str, @"^[\d,]+").Value.Replace(",", String.Empty);
然后可以分析字符串:

int n = Int32.Parse(num);
正则表达式的解释

^      =   Matches the beginning of the string
[]     =   Matches a set of characters
\d     =   Matches a digit
[\d,]  =   Matches a digit or a comma
+      =   Repeats the previos match one or more times
因为它总是完全是“cars”,所以您只需删除最后4个字符,然后用空字符串替换逗号:

int.Parse(str.Remove(str.Length-4).Replace(",",""))

@为什么?因为char.Digit对所有unicode数字都返回true?否,因为
char.IsDigit
返回布尔值。。。我甚至不想弄清楚其余的是什么。编辑:你的意思是说
在哪里
,这很有意义;pOh,
select
应该是
where
。它总是“cars”吗?在那个位置总是4位数字加逗号吗?是的,总是cars,尽管数字可以大于或小于4位。如果我没弄错的话,
\d
也将匹配非阿拉伯数字(如五) 因此,在这种情况下,
[0-9]
可能更好。
int.Parse(str.Remove(str.Length-4).Replace(",",""))
    var str = "1,20.3cars";
    str = str.Replace(",", "");
    var num = int.Parse(new string(str.TakeWhile(char.IsDigit).ToArray()));

    Console.WriteLine(num);