我有数学应用。我有问题nth root。我正在使用mathJax
库来渲染结果。用户输入结果将在textview
中。我需要在IOS中显示cube root和nth root。用户点击第n个根密钥后,会显示√(n)(x)
此处用户必须删除n并输入root值和root。
Swift代码
func replaceNTHRootEquation(equation : String)->String{
print("===equation==:\(equation)")
let newString = equation.stringByReplacingOccurrencesOfString("√\\((.*)\\)\\((.*)\\)", withString: "root($2)^(1/$1)")
print("===newString==:\(newString)")
return newString
}
我会像这样工作,当用户按下时,它会显示在textview
√(n)(x) , then user delete
n and type value like
x`中。{/ p>
目前我的问题是我传递的初始等式如√(n)(x)
,但replaceNTHRootEquation
方法会返回相同的结果。不是root(3)(27)
请提出建议
答案 0 :(得分:1)
"√((.*))((.*))"
未能按预期捕获√(3)(27)
,因为外部括号未被转义。就像它们一样,它们被解释为捕获组,例如:
(.*)
是您的第一个捕获组($1
).*
是您的第一个捕获组($2
)(.*)
是您的第一个捕获组($3
).*
是您的第一个捕获组($4
)您需要通过添加\
来转义括号,以指示您希望将括号字面解释为括号,而不是捕获组的开始/结束。但是,\
已经具有保留意义,因为它启动了各种与Swift相关的转义序列。因此,您需要使用另一个斜杠来转义\
,以指示您希望将斜杠字面解释为斜杠,而不是转义序列的开头。像这样:
"√\\((.*)\\)\\((.*)\\)"