You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中将建筑格式字符串转为英寸Double值?

处理建筑格式长度转英寸的C#方案

好问题!C#标准库本身确实没有专门针对建筑格式长度字符串的内置转换函数,但有几个现成的方案可以帮你避免从头写繁琐的字符遍历逻辑:

1. 使用第三方库UnitsNet(最推荐)

UnitsNet是一个专门处理单位转换和解析的开源库,完美支持你提到的所有建筑长度格式,包括分数、带小数点、不同分隔符(比如'-'或者直接空格)的情况。

首先通过NuGet安装UnitsNet包,然后就可以直接用:

// 解析各种格式的长度字符串
Length length1 = Length.Parse("1'-2\"");
Length length2 = Length.Parse("1'-2 1/2\"");
Length length3 = Length.Parse("1'0.5");

// 转换成英寸数值
double inches1 = length1.Inches; // 14.0
double inches2 = length2.Inches; // 14.5
double inches3 = length3.Inches; // 12.5

这个库会自动处理所有边缘情况,不用你自己写任何匹配逻辑,非常省心。

2. 利用WPF的LengthConverter(依赖WPF库)

如果你的项目是WPF应用,或者可以引用WPF相关的库(PresentationCore.dll),那么System.Windows.Media.LengthConverter可以帮你解析这类格式。需要注意的是,它返回的是WPF的设备无关单位(1英寸=96设备单位),所以要除以96得到英寸数:

var converter = new System.Windows.Media.LengthConverter();
// 解析字符串
object result = converter.ConvertFromString("1'-2 3/16\"");
// 转换为英寸
double inches = (double)result / 96; // 得到14.1875

这个方案不需要额外安装NuGet包,但只能在能引用PresentationCore的项目中使用。

3. 正则表达式匹配(无依赖方案)

如果不想用第三方库也不想依赖WPF,正则表达式是比手动遍历字符更简洁的方案。下面的代码可以匹配你给出的所有示例格式:

using System.Text.RegularExpressions;

public static double ConvertArchitecturalLengthToInches(string input)
{
    // 匹配英尺、整数英寸、分数英寸的正则表达式
    var pattern = @"^(?:(\d+)(?:'|’)(?:-?\s*)?)?(?:(\d+(?:\.\d+)?)(?:\s+(\d+)\/(\d+))?)?(?:""|”)?$";
    var match = Regex.Match(input.Trim(), pattern, RegexOptions.IgnoreCase);

    if (!match.Success)
        throw new FormatException($"无法解析长度格式:{input}");

    // 计算英尺部分
    double feet = match.Groups[1].Success ? double.Parse(match.Groups[1].Value) : 0;
    // 计算整数英寸部分
    double inches = match.Groups[2].Success ? double.Parse(match.Groups[2].Value) : 0;
    // 计算分数英寸部分
    if (match.Groups[3].Success && match.Groups[4].Success)
    {
        int numerator = int.Parse(match.Groups[3].Value);
        int denominator = int.Parse(match.Groups[4].Value);
        inches += (double)numerator / denominator;
    }

    return feet * 12 + inches;
}

调用这个方法就能得到你想要的Double类型英寸数值,代码量远少于手动遍历字符,也容易维护。


内容的提问来源于stack exchange,提问作者Tyler Cline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:13:47