1

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

有人对此有简单的解决方案吗?

4

4 回答 4

3

只需删除最后一个.,然后使用float.Parse或解析字符串的其余部分float.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))
于 2013-10-29T15:02:23.743 回答
2

str如果有意外的格式,这将引发异常。

float f = float.Parse(str.Remove(str.LastIndexOf('.'), 1), CultureInfo.InvariantCulture);
于 2013-10-29T15:00:36.263 回答
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
于 2013-10-29T15:04:02.893 回答
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     
于 2013-10-29T15:18:02.930 回答