转换度量时的Google搜索的C#模块化转换实用程序模仿

时间:2018-12-07 22:07:28

标签: c#

我要做的任务是创建一个转换度量的搜索引擎副本。用户输入“ 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();

这很成问题/限制了我。我采取的每条路线都遇到了某种错误。

我要做的就是读取用户输入的内容,并从计算机的内容中输出适当的值。

1 个答案:

答案 0 :(得分:0)

了解Regex,它将成为您的朋友,尤其是对于这样的人。

以下查询将为您的特殊情况提供帮助:

([0-9]+[.]?[0-9]*)[\s]*([\w]+)[\s]+[\w]+[\s]+([\w]+)

松散翻译:寻找数字(4),然后寻找是否有空格,然后寻找一个单词(cm),然后寻找空间,然后寻找一个单词(to),然后寻找空间,然后寻找一个单词(英寸)。

正则表达式提供“组”(括号中的项目)。对于上述正则表达式中的4cm to inches,组为4cminches ...所有有用的位。

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;