我要做的任务是创建一个转换度量的搜索引擎副本。用户输入“ 4cm至英寸”,程序将进行适当的计算以给出英寸的答案。现在,该程序必须能够通过一系列不同的尺寸和尺寸进行转换,例如体积和面积。到目前为止,我已经能够使用字符串的属性(即Substring,IndexOf,Convert.Toint16)将其严格地从cm转换为英寸,并且我希望它继续这样做,但是我正在努力对其进行模块化,以便它可以进行一系列有效地进行不同的计算。这就是我到目前为止所拥有的...
Toconvert = Console.ReadLine();
Cmpos = Toconvert.IndexOf("cm");
Inchespos = Toconvert.IndexOf("inches");
CmUnits = Toconvert.Substring(Cmpos, 2);
InchesUnits = Toconvert.Substring(Inchespos, 6);
number2convert = Convert.ToInt16(Toconvert.Substring(0, Cmpos));
Inches = number2convert / 2.54;
Console.WriteLine("{0}{1} is {2:F2} {3}", number2convert, CmUnits, Inches, InchesUnits);
Console.ReadLine();
这很成问题/限制了我。我采取的每条路线都遇到了某种错误。
我要做的就是读取用户输入的内容,并从计算机的内容中输出适当的值。
答案 0 :(得分:0)
了解Regex,它将成为您的朋友,尤其是对于这样的人。
以下查询将为您的特殊情况提供帮助:
([0-9]+[.]?[0-9]*)[\s]*([\w]+)[\s]+[\w]+[\s]+([\w]+)
松散翻译:寻找数字(4),然后寻找是否有空格,然后寻找一个单词(cm),然后寻找空间,然后寻找一个单词(to),然后寻找空间,然后寻找一个单词(英寸)。
正则表达式提供“组”(括号中的项目)。对于上述正则表达式中的4cm to inches
,组为4
,cm
和inches
...所有有用的位。
This is an example of it in use。对于Regex的每个步骤,也都有很好的解释(单击“解释”选项卡)。
这是一个C#示例:
var reg = new System.Text.RegularExpressions.Regex(@"([0-9]+[.]?[0-9]*)[\s]*([\w]+)[\s]+[\w]+[\s]+([\w]+)");
var match = reg.Match("4cm to inches");
double numberToConvert = double.Parse(match.Groups[1].Value);
string fromUnits = match.Groups[2].Value;
string toUnits = match.Groups[3].Value;