我正在为一个项目获取一些数据,该项目给我一个格式为 XXX 的字符串(例如 15.23.1),我需要以某种方式将其降至 15.231。我以为我可以将原始字符串转换为浮点数,然后使用 Convert.ToSingle 将其转换为浮点数,但到目前为止我的尝试都失败了。
有人对此有简单的解决方案吗?
我正在为一个项目获取一些数据,该项目给我一个格式为 XXX 的字符串(例如 15.23.1),我需要以某种方式将其降至 15.231。我以为我可以将原始字符串转换为浮点数,然后使用 Convert.ToSingle 将其转换为浮点数,但到目前为止我的尝试都失败了。
有人对此有简单的解决方案吗?
只需删除最后一个.
,然后使用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))
str
如果有意外的格式,这将引发异常。
float f = float.Parse(str.Remove(str.LastIndexOf('.'), 1), CultureInfo.InvariantCulture);
看起来你只需要使用String.Remove
和String.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
正则表达式选项:
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