我想将值高度转换为浮点值。最终值为3英尺5英寸。我想在C#中将其转换为浮点值3.5。这个值在我的公式中有所不同,我需要用它来计算。怎么做这个任务?
答案 0 :(得分:3)
假设您的输入字符串名为input
:
var parts = input.Trim().Split(' ');
int feet = int.Parse(parts[0]);
int inches = int.Parse(parts[2]);
float result = feet + inches / 12.0f;
但请注意,这很脏(取决于间距等) - 因为您没有提供任何有关您给出的内容和您想要的内容的详细信息(或者更确切地说,我非常确定您想要的内容) - 请查看评论在你的问题下面),这是你可以得到的。 ;)
答案 1 :(得分:0)
忽略3英尺5英寸不是3.5英尺的事实:
class Program
{
static void Main(string[] args)
{
string heightString = "3ft 5 in";
string validRegex = @"^\d(\s)*ft(\s)*\d(\s)*in$";
if(!Regex.Match(heightString, validRegex).Success)
throw new Exception("Invalid Input");
var feetIndex = heightString.IndexOf("ft");
var substring = heightString.Substring(0,feetIndex ).Trim();
var inchesSubString = heightString.Substring(feetIndex + 2);
var inchesStr = inchesSubString.Substring(0, inchesSubString.IndexOf("in")).Trim();
var integralPart = float.Parse(substring);
var fractionalPart = float.Parse(inchesStr)/10D;
var result = integralPart + fractionalPart;
}
}
答案 2 :(得分:0)
假设输入的格式始终为“3 ft 5 in”,您可以按空格分割,连接第一个和第三个项目以及“。”介于两者之间并将结果字符串转换为浮点数。
public float Convert(string height)
{
if (string.IsNullOrEmpty(height))
return 0;
// input format: "3 ft 5 in"
var spaceSplitted = height.Split(' ');
if (spaceSplitted.Length <= 3)
return 0;
var concatenatedValue = spaceSplitted[0] + "." + spaceSplitted[2];
float floatResult;
float.TryParse(concatenatedValue, NumberStyles.Float, CultureInfo.InvariantCulture, out floatResult);
return floatResult;
}