在字符串中连续数字后面插入字符串?

3
我正在使用Unity,特别是UnityScript或C#的答案会有所帮助。我正在使用eval()制作计算器,需要使用^进行指数运算。
我想要实现:
1+2^

将文本翻译成中文:

并将^替换为,,在2后面插入Mathf.Pow(

我需要它在“2”有多个数字时也能工作。

它需要变成:

1+Mathf.Pow(2, 
//Mathf.Pow is exponents using 2 parameters

现在,当用户输入 3 时,它变成了 1+Mathf.Pow(2,3。我已经知道如何在用户输入非数字时添加 )

你能把这个问题简化一点吗? - Milad Qasemi
@user2320445 我想把 "abc123^456" 转换成 "abc(123,456)"。我需要它也能处理像 "gh1473209^2" 这样的内容,并将其转换为 "gh(1473209,2)"。 - ei1
1个回答

2
只需使用“替换”和“插入”两个操作即可。
function Start () 
{    
var s : String = "1+1245^6+3";
var MathString : String = "Mathf.Pow(";
var MathString1 : String = ")";
var strResult : String  = "";
var j : int;
s = s.Replace('^', '.');

for( var i=0; i< s.length; i++)
{
  if(s[i]=='+' || s[i]=='-' || s[i]=='/')   
    j=i;        
  if(s[i]=='.')
  {
     strResult = s.Insert((i+2), MathString1 );
     s= strResult;
     print(j);
     strResult = s.Insert((j+1), MathString );
  } 
 }
 print(strResult);// 1+Mathf.Pow(1245.6)+3
}

这并没有完全解决我的问题。我需要它在“^”前面的数字有多个数字时也能正常工作。如果我有1+10^2+3,它应该变成1+1Mathf.Pow(0,2)+3。 - ei1
这确实有所帮助。不必将MathString插入到i-1中,我可以重复测试每个字符是否为数字,并返回数字的数量。我可以将MathString插入到i-[在^之前连续有多少个数字]的位置。但是我仍然无法完全理解。 - ei1
现在检查我的答案,根据您的需求进行编辑。 - Rasa Mohamed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接