我正在为我们公司的产品编写一个库,可以将用户已经熟悉的任何类型的建筑尺寸作为输入,通过一个函数将其从字符串转换为双精度浮点数。以下是我们希望有效的输入类型列表。
输入
| 含义 | 输出
(以英寸表示的双精度浮点数)
12.5'
| 12 英尺 6 英寸 | 150.0
11"
| 11 英寸 | 11.0
3/16"
| 3/16 英寸 | 0.1875
英尺和英寸之间,英寸和1/16 英寸之间可使用空格或不使用空格
11' 11"
| 11 英尺 11 英寸 | 143.0
11'11"
| 11 英尺 11 英寸 | 143.0
英尺和英寸之间或英寸和1/16 英寸之间或两者之间均可使用破折号或不使用破折号
12'-11"
| 12 英尺 11 英寸 | 155.0
12' 11 3/16"
| 12 英尺 11 英寸 3/16 | 155.1875
12' 11-1/2"
| 12 英尺 11 英寸 8/16 | 155.5
英尺和英寸之间,英寸和1/16 英寸之间可使用任意数量的空格
12' 11 1/2"
| 12 英尺 11 英寸 8/16 | 155.5
还提供了一种更简单的格式
121103
| 12英尺11英寸3/16 | 155.1875
每种格式中也可能包含负数
-121103
| 12英尺11英寸3/16 | -155.1875
-11'11"
| 11英尺11英寸 | -143.0
我们目前正在使用一组极其复杂的分支逻辑来尝试确定输入尝试模拟的格式...而且它并不适用于所有情况。
是否有一些LINQ和正则表达式以及巫术的可能性,可以用来确定如何解析字符串?
还请注意,我们真的想避免在表单上提供一个简单的组合框以选择输入格式类型。