我有字符串例如
var str = "1,203cars";
我想将此数字转换为整数(以删除此奇怪的逗号分隔符)并删除汽车。我知道我应该使用String.Trim()
方法,但我不知道如何从后面修剪并移除汽车并将1,203
转换为1203
而不会丢失数据。
答案 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);