如何替换字符串中的变量

需求:用一个数组中的文字替换一个字符串中的特殊标记字符。

var prop:Array = ["ss1", 2,"雷峰塔", 3];

法一:

var ss:String = "【 [prop1] 】 [prop2] 分钟后在场景【[prop3]】出现!各位[prop4]级以上守护者们赶紧前往挑战";
for (var i:int =0; i<prop.length; i++)
{
         ss= ss.split("[prop"+(i+1)+"]").join(prop[i]);
}
trace(ss);

 

法二:

var ss2:String = "【 [prop1] 】 [prop1] 分钟后在场景【[prop1]】出现!各位[prop1]级以上守护者们赶紧前往挑战";
var i:int = 0;
var index:int =ss2.indexOf("[prop1]");
while(index != -1 &&i<prop.length)
{
         ss2= ss2.replace("[prop1]", prop[i]);
         i++;
         index= ss2.indexOf("[prop1]");
}
trace(ss2);

 

开放讨论:还有其他更方便、有效率的方法么?
是的,ScriptEngine 可以支持将整个 Map 对象传入,并在表达式使用 Map 的键值对来替换字符串变量。这样,您就可以在表达式使用多个变量,并将这些变量的值存储在 Map ,然后在执行脚本时将整个 Map 对象传递给 ScriptEngine。ScriptEngine 就可以在求解表达式时使用 Map 的键值对来替换表达式变量。 下面是一个使用 ScriptEngine 求解带变量的数学表达式,并将变量存储在 Map 的示例代码: ```java import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import java.util.HashMap; import java.util.Map; public class MathEvalExample { public static void main(String[] args) throws ScriptException { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); // 定义变量并存储在 Map Map<String, Object> variables = new HashMap<>(); variables.put("x", 2); variables.put("y", 3); // 在表达式使用变量 String expression = "x * (y + 4)"; Object result = engine.eval(expression, variables); System.out.println(result); } } ``` 在上面的示例,我们定义了两个变量 x 和 y,并将它们存储在一个 Map 对象 variables 。然后,我们将表达式作为一个字符串传递给 ScriptEngine.eval 方法,并将 variables 对象作为第二个参数传递给 ScriptEngine.eval 方法。在求解表达式时,ScriptEngine 会使用 variables 的键值对来替换表达式变量,并返回计算结果。 因此,ScriptEngine 可以支持将整个 Map 对象传入,并在表达式使用 Map 的键值对来替换字符串变量。这样,您就可以使用多个变量,并将这些变量的值存储在 Map ,从而更方便地进行数学计算。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星星之Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值