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

时间:2014-08-24 19:58:25

标签: c# .net

我有字符串例如

var str = "1,203cars";

我想将此数字转换为整数(以删除此奇怪的逗号分隔符)并删除汽车。我知道我应该使用String.Trim()方法,但我不知道如何从后面修剪并移除汽车并将1,203转换为1203而不会丢失数据。

5 个答案:

答案 0 :(得分:4)

您可以使用正则表达式从字符串的开头获取数字(稍后会在字符串中省略任何数字),然后删除分隔符。

示例:

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

答案 1 :(得分:2)

使用一点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()));

答案 2 :(得分:2)

 var str = "1,203cars";   
 var newStr = Int32.Parse(Regex.Match(str.replace(",",""), @"\d+").Value);

答案 3 :(得分:1)

因为它总是" cars",你可以删除最后4个字符,然后用空字符串替换逗号:

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

答案 4 :(得分:0)

    var str = "1,20.3cars";
    str = str.Replace(",", "");
    var num = int.Parse(new string(str.TakeWhile(char.IsDigit).ToArray()));

    Console.WriteLine(num);