我想实现一个算法/验证。如何在Flex中找出一个字符串包含的特定字符是否超过6次?
发布于 2012-11-02 16:34:58
有两种方法,我可以想到:
var ch:String = "a";//必须检查的字符var text:String = "This is a example to show多少次‘“+ch+”“。”;//匹配非文本字符var regexp:RegExp =ch RegExp("^"+ch+"","g");//用空字符串替换非ch字符var text.replace:Number=.length(regexp,"").length;trace(text,":“,timesOccured );
var ch:String = "a";//必须检查的字符var text:String = "This is a example to show多少次‘“+ch+”“。”;//匹配新字符var regexp:RegExp = ch RegExp(ch,"g");var matches :text.match= text.match(regexp);var matches:text.match= 0;//matches可以是'null',所以我们正在执行额外的检查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-02 21:49:33
正则表达式的一种更简单的替代方法可以是:
var str:String = "This is an example to show how many...";
//find occurrences for character 'a'
trace("Ocurrences:" + str.split('a').length-1);https://stackoverflow.com/questions/13191173
复制相似问题