【问题标题】:Insert string behind consecutive numbers in string?在字符串中的连续数字后面插入字符串?
【发布时间】:2015-12-23 22:07:02
【问题描述】:

我正在使用 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。我已经知道如何在用户输入非数字时添加)

【问题讨论】:

  • 你能把问题简化一点吗
  • @user2320445 我想把“abc123^456”改成“abc(123,456)”。我需要它也适用于“gh1473209^2”之类的东西并使其成为“gh(1473209,2)”

标签: c# string unity3d logic unityscript


【解决方案1】:

只需替换插入就足够了。

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
  • 这确实有帮助。我可以重复测试每个字符是否为数字并返回有多少个数字,而不是将 MathString 插入 i-1。我可以将 MathString 插入插槽 i-[在 ^ 之前连续有多少个数字] 我仍然无法准确地得到它
  • 现在检查我根据您的需要编辑的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多