我想做的是采用输入字符串,采用体系结构格式并将其转换为双英寸。 例如:
Input: (String) Output: (Double)
1'-2" 14
1'-2 1/2" 14.5
1'2 3/16" 14.1875
1' 12
12 12
12" 12
1'0.5 12.5
1'0.5" 12.5
1'-0.5 12.5
1'-0.5" 12.5
我知道我需要遍历字符串中的每个字符并测试一堆案例,但我不知道c#中是否有一些内置函数或者其他资源可以为我做这个而不是make我重新发明了轮子。
答案 0 :(得分:0)
胜利的正则表达式!
好的,如果你是Regex的新手,它基本上是一种解析字符串的方法。所以,实际上,你的输入是由什么组成的?
在高层次上,你有以下三种可能性之一:
那些'号码?
的可能性:
好的,首先,我们需要一个正则表达式用于你的一个“数字”:
\d+|\d+.\d+|\d+ \d+\/\d+|\d+\/\d+
(看起来很复杂,但请参阅以下两页以供参考:http://www.rexegg.com/regex-quickstart.html和https://regex101.com/)
现在,正好我们的正则表达式不会让太复杂,你可以这样做:
string regexSnippetForNumber = @"\d+|\d+.\d+|\d+ \d+\/\d+|\d+\/\d+";
string regexForComposite =
"^(" + regexSnippetForNumber + ")'[ -]" +
"(" + regexSnippetForNumber + ")\"?$"
...然后,如果输入与regexForComposite匹配,则使用两个捕获组来获取这两个数字。 (您必须解析才能获得数值。)
希望这是有道理的,可以让你足够接近终点线。如果您之前从未使用过Regex,我强烈建议您阅读它们。当你需要进行字符串解析时,它们非常方便,否则会非常烦人(就像这个确切的问题!)