AS3的replaceAll不敏感
问题描述:
我有这个AS3功能AS3的replaceAll不敏感
public static function StringReplaceAll(source:String, find:String, replacement:String) : String {
return source.split(find).join(replacement);
}
正常工作:任何想法如何使它情况下insenstive? Regards
答
只需使用String#replace()函数。
例如:
trace("HELLO there".replace(/e/gi, "a"));
//traces HaLLO thara
在替换功能的第一个参数是一个正则表达式。你会发现他们的信息all over the web。 Grant Skinner提供的这个方便的工具叫做Regexr,您可以使用它来测试正则表达式的ActionScript风格。
两个正斜杠(/)之间的部分是实际的正则表达式。
- 在“克”之后的正则表达式的意思是“全局替换”(即,字母“e”的在本例中,所有出现的无“G”,将只需更换中第一次出现)。
- 'i'表示“做一个不区分大小写的搜索”(在这个例子中,如果没有'i',大写E就不会被替换)。
注意/e/gi
实际上只是为new RegExp("e", "gi")
答
速记一个快速的方法可能是做两个替代品。一个用于lowerCase,另一个用于upperCase。它会是这个样子:
public static function StringReplaceAll(source:String, find:String, replacement:String) : String
{
var replacedLowerCase:String = StringReplace(source, find.toLowerCase(), replacement.toLowerCase());
return StringReplace(replacedLowerCase, find.toUpperCase(), replacement.toUpperCase());
}
private static function StringReplace(source:String, find:String, replacement:String) : String
{
return source.split(find).join(replacement);
}
因此,在这种情况下,你会保持你的find
完好即的情况下:
trace(StringReplaceAll('HELLO there', 'e', 'a'));
// traces HALLO thara
如果您不希望保留的情况下完整@ RIAstar的String.replace()
答案更清洁。 (但你当然也可以使用他的例子两次为此事)
+1还要注意,拆分功能也可以采取RegEx为第一个参数,但替换功能显然是要走的路 – OXMO456
我只有upvoted因为你解释了你的RegEx。 –