首页 > 解决方案 > 如何获取匹配正则表达式(c#)的字符串的一部分?

问题描述

我有一些字符串,如“8 2 / 5”、“5 5/ 7”等,包含数学分数。我需要将它们转换为双打。那么,我怎样才能将这些部分“8”“2 / 5”放入变量中?

var src = " 8 2 /  5";
string base = getBase(src);
string frac = getFrac(src);
// Now base must contain "8" and frac "2/5";

我不知道是否有些东西可以做这个“分数到双倍”的任务已经存在(如果有,请提供链接或其他东西),但如果我可以将这些部分放入变量中,我将能够执行除法至少还有一个补充。

标签: c#regexregular-language

解决方案


简单操作:在RegexStorm上测试的正则表达式

String src = " 8 2 /  5";
String Regex = @"([1-9])([0-9]*)([ ])([1-9])([0-9]*)((.)([0-9]+)|)([ ])([- / + *]){1}([ ])([1-9])([0-9]*)((.)([0-9]+)|)";

if(!Regex.IsMatch(src , Regex ))
   return;


float Base = float.Parse(Base.Split(" ")[0], CultureInfo.InvariantCulture.NumberFormat);
float Devided= float.Parse(Base.Split(" ")[1], CultureInfo.InvariantCulture.NumberFormat);
float Operator= float.Parse(Base.Split(" ")[2], CultureInfo.InvariantCulture.NumberFormat);
float Denominator= float.Parse(Base.Split(" ")[3], CultureInfo.InvariantCulture.NumberFormat);

//TODO your operation here

推荐阅读