0

アルゴリズム/検証を実装したい。Flex で文字列に特定の文字が 6 回以上含まれているかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

2

正規表現のより簡単な代替方法は次のとおりです。

var str:String = "This is an example to show how many...";
//find occurrences for character 'a'

trace("Ocurrences:" + str.split('a').length-1);
于 2012-11-02T13:49:33.243 に答える
2

2つの方法があり、私は考えることができます:

  1. 次のようにRegExp.replace()を使用します。

    var ch:String = "a";    //Character, that must be checked
    var text:String = "This is an example to show how many times '"+ch+"' occured.";
    //Matches non-`ch` characters
    var regexp:RegExp = new RegExp("[^"+ch+"]","g");   
    //Replacing non-`ch` characters with empty string
    var timesOccured:Number = text.replace(regexp,"").length;  
    trace(text, ": " ,timesOccured );
    
  2. 次のようにRegExp.match()を使用します。

    var ch:String = "a";    //Character, that must be checked
    var text:String = "This is an example to show how many times '"+ch+"' occured.";
    //Matches `ch` characters
    var regexp:RegExp = new RegExp(ch,"g");
    var matches:Array = text.match(regexp);
    var timesOccured:Number = 0;
    //`matches` can be 'null', so we are performing additional check
    if( matches ){   
        timesOccured = matches.length;
    }
    trace(text, ": " ,timesOccured );
    

があればtimesOccured、検証を簡単に行うことができます。

if( timesOccured > 6 ){
   //Do some stuff
}else{
   //Do other stuff
}    

警告:が、、、、、、などのch正規表現の特殊文字である場合は、変数に渡す.前にエスケープする必要があります。+(]\regexp

ch = ch.replace(new RegExp("[.*+?|()\\[\\]{}\\\\]", "g"), "\\$&");
于 2012-11-02T08:34:58.133 に答える