将格式为X.X.X的字符串转换为float

时间:2013-10-29 14:59:32

标签: c# type-conversion

我正在抓取一个项目的一些数据,它给我一个X.X.X格式的字符串(例子15.23.1),我需要以某种方式降到15.231。我以为我可以将原始字符串转换为浮点数,然后使用Convert.ToSingle将其转换为浮点数,但到目前为止我的尝试都失败了。

任何人都可以轻松解决此问题吗?

4 个答案:

答案 0 :(得分:3)

只需删除最后一个.,然后使用float.Parsefloat.TryParse

解析其余字符串
string str = "15.23.1";
str = str.Remove(str.LastIndexOf('.'), 1);

float f;
if (float.TryParse(str, out f))
{
    Console.WriteLine("Parsing successful");
}
else
{
    Console.WriteLine("Parsing failed");
}

如果您想要文化不敏感解析,那么您可以尝试:

if (float.TryParse(str, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out f))

答案 1 :(得分:2)

如果str出现意外格式,则会抛出异常。

float f = float.Parse(str.Remove(str.LastIndexOf('.'), 1), CultureInfo.InvariantCulture);

答案 2 :(得分:1)

您似乎只需要使用String.RemoveString.LastIndexOf等方法;

string s = "15.23.1";
s = s.Remove(s.LastIndexOf('.'), 1);

float f;
if(float.TryParse(s, NumberStyles.Float, CultureInfo.InvariantCulture, out f))
{
   Console.WriteLine("YES");
   Console.WriteLine(f);
}
else
{
   Console.WriteLine("NO");
}

输出将是;

15,231

答案 3 :(得分:1)

正则表达式的选项:

string str = "14.4.6";
str = Regex.Replace(str, @"(\d+)(\.\d+)?\.?(\d+)?", "$1$2$3");
// parse string

输入和输出样本:

15.23.1 > 15.231
15.23   > 15.23
15      > 15