我有一些字符串,例如“ 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";
我不知道是否有某些东西可以完成“分数到两倍”任务(如果是的话,请提供链接或其他内容),但是如果我可以将这些部分放入变量中,我将能够至少要进行除法和加法。
答案 0 :(得分:0)
最简单的方法是像这样的正则表达式
(\d) (\d) \/ (\d)
将使用一位数字,并且所有空格均已正确设置。进行编码以计算结果可能类似于
string src = "8 2 / 5";
Regex rx = new Regex(@"(\d) (\d) \/ (\d)");
Match m = rx.Match(src);
if (m.Success)
{
int bs = Convert.ToInt32(m.Groups[1].Value);
int f1 = Convert.ToInt32(m.Groups[2].Value);
int f2 = Convert.ToInt32(m.Groups[3].Value);
double result = bs + (double)f1 / f2;
}
要允许在数字之间使用多个数字和多个空格,可以改进正则表达式,例如
(\d*)\s+(\d*)\s+\/\s+(\d*)
要测试正则表达式,您可以使用诸如regex101之类的在线在线工具。
答案 1 :(得分:0)
简单操作:正则表达式已在RegexStorm上进行了测试
"start": 'node ./app.js | pino-mongodb --username=myUser --password=myPw'