我在替换字符串方面遇到了困难。
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
和分裂相同。 谢谢&此致
答案 0 :(得分:2)
我用它来替换所有
var result:String=inString.split("X").join("*");
答案 1 :(得分:2)
我知道你已经选择了一个答案,但它缺乏解释和适当的解决方案。您发现这种情况的原因是String.replace()
,当pattern
是String
时,只会替换第一个结果。解决方案是使用RegEx
:
var expression:String = '2x3X3x4X5X6';
var result:String = expression.replace(/x/ig, "*");
trace(result); // output 2*3*3*4*5*6
该模式使用两个标志,全局和不区分大小写。无论如何,这将获取字母X的所有实例,并搜索整个字符串。 RegEx
的好处是极低水平。使用正则表达式时,几乎没有开销,这意味着它们非常快。我相信,String.split
和String.join
使用循环来运行,速度相当慢。此外,您必须在内存中存储其他数组。
当然,在大多数情况下这些可以忽略不计(可能是10微秒的差异),但不是全部。我有一个项目需要加密的文件。不幸的是,文件太大(最少200MB),而replace().join()
方法比RegEx
方法慢4-5。使用RegEx
,我设法减少了延迟,同时从几秒钟加速到2-3帧。
答案 2 :(得分:-1)
inString=inString.replaceAll("X","*");
吗?注意“全部”后缀!