ActionScript 2字符串按指定顺序包含指定字符的检测实现求助
在ActionScript 2中检测字符串是否按顺序包含特定字符
没问题,我来帮你搞定这个需求!咱们的核心思路是按顺序逐个查找目标字符,每找到一个就从它的下一个位置开始找下一个字符,这样就能确保字符出现的顺序完全符合要求。
实现代码
这里直接给你写好可复用的函数,还有对应的测试示例:
function doesContainInOrder(sourceStr:String, targetChars:Array):Boolean { var currentPos:Number = 0; // 遍历每个需要查找的目标字符 for (var i:Number = 0; i < targetChars.length; i++) { var charToFind:String = targetChars[i]; // 从当前位置开始查找字符 var foundPos:Number = sourceStr.indexOf(charToFind, currentPos); // 如果找不到这个字符,直接返回false if (foundPos == -1) { return false; } // 更新当前位置为找到的位置+1,确保下一个字符在它之后出现 currentPos = foundPos + 1; } // 所有字符都按顺序找到了,返回true return true; } // 测试你的示例场景 var testStr:String = "wqeeqwe j qwqwq a retrt v iyiiyi a "; var targetWord:Array = ['j', 'a', 'v', 'a']; if (doesContainInOrder(testStr, targetWord)) { trace("字符串按顺序包含'j,a,v,a'!执行相应操作..."); // 这里写你需要执行的操作,比如弹窗、跳转等 } else { trace("字符串没有按顺序包含目标字符"); }
代码解释
doesContainInOrder函数接收两个参数:sourceStr是要检测的原字符串,targetChars是按顺序需要匹配的字符数组(比如你要找的['j','a','v','a'])- 用
currentPos记录当前查找的起始位置,每找到一个字符就把起始位置往后移一位,保证后续字符必须出现在当前字符的后面 indexOf(charToFind, currentPos)方法会从currentPos开始查找指定字符,找不到就返回-1,这时候直接判定不符合条件- 如果所有目标字符都按顺序找到,函数就返回
true,你就可以在if块里执行你需要的操作了
这个方法既高效又灵活,不管你要检测的是几个字符的序列,只要传入对应的字符数组就行~
内容的提问来源于stack exchange,提问作者Motimot
相关产品推荐
相关产品推荐

