我正在抓取一个项目的一些数据,它给我一个X.X.X格式的字符串(例子15.23.1),我需要以某种方式降到15.231。我以为我可以将原始字符串转换为浮点数,然后使用Convert.ToSingle将其转换为浮点数,但到目前为止我的尝试都失败了。
任何人都可以轻松解决此问题吗?
答案 0 :(得分: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))
答案 1 :(得分:2)
如果str
出现意外格式,则会抛出异常。
float f = float.Parse(str.Remove(str.LastIndexOf('.'), 1), CultureInfo.InvariantCulture);
答案 2 :(得分:1)
您似乎只需要使用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
答案 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