as3替换所有不敏感

时间:2011-12-13 11:51:30

标签: flash actionscript-3

我有这个as3功能

public static function StringReplaceAll( source:String, find:String, replacement:String ) : String {
      return source.split( find ).join( replacement );
}

工作正常:任何想法如何让它不区分大小写? 此致

2 个答案:

答案 0 :(得分:19)

只需使用String#replace()功能。

例如:

trace("HELLO there".replace(/e/gi, "a"));
//traces HaLLO thara

replace函数中的第一个参数是正则表达式。您将找到有关他们的信息all over the web。 Grant Skinner提供了一个名为Regexr的方便工具,您可以使用它来测试正则表达式ActionScript风格。

两个正斜杠(/)之间的部分是实际的正则表达式。

  • 正则表达式后的' g '表示“全局替换”(即示例中所有出现的字母'e',没有'g',它只会替换第一次出现)。
  • ' i '表示“执行不区分大小写的搜索”(在示例中,没有'i',资本E不会被替换)。

请注意,/e/gi实际上只是new RegExp("e", "gi")

的简写

答案 1 :(得分:-1)

快速的方法可以是做两次替换。一个用于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()答案更清晰。 (但你当然也可以两次使用他的例子)