替换As3中的多个字符

时间:2014-03-03 10:51:33

标签: actionscript-3 flex flash-builder

我在替换字符串方面遇到了困难。

var expression:String = '2X3';
var inString:String = expression;
inString=inString.replace("÷","/");
inString=inString.replace("X","*");
trace('Result.....',inString);

输出: - 结果..... 2 * 3

没关系。 但问题是我试图提供输入

  

var expression:String ='2X3X3X4X5X6';

输出: -

  

结果..... 2 * 3X3X4X5X6

但我需要它以

的形式
  

结果..... 2 * 3 * 3 * 4 * 5 * 6

和分裂相同。 谢谢&此致

3 个答案:

答案 0 :(得分:2)

我用它来替换所有

var result:String=inString.split("X").join("*");

答案 1 :(得分:2)

我知道你已经选择了一个答案,但它缺乏解释和适当的解决方案。您发现这种情况的原因是String.replace(),当patternString时,只会替换第一个结果。解决方案是使用RegEx

var expression:String = '2x3X3x4X5X6';
var result:String = expression.replace(/x/ig, "*");
trace(result); // output 2*3*3*4*5*6

该模式使用两个标志,全局和不区分大小写。无论如何,这将获取字母X的所有实例,并搜索整个字符串。 RegEx的好处是极低水平。使用正则表达式时,几乎没有开销,这意味着它们非常快。我相信,String.splitString.join使用循环来运行,速度相当慢。此外,您必须在内存中存储其他数组。

当然,在大多数情况下这些可以忽略不计(可能是10微秒的差异),但不是全部。我有一个项目需要加密的文件。不幸的是,文件太大(最少200MB),而replace().join()方法比RegEx方法慢4-5。使用RegEx,我设法减少了延迟,同时从几秒钟加速到2-3帧。

答案 2 :(得分:-1)

你试过inString=inString.replaceAll("X","*");吗?注意“全部”后缀!