{"ScriptPreparationCode":"/**\r\n * Boyer Moor Horspool\r\n */\r\nfunction boyerMooreHorspool(haystack, needle) {\r\n var badMatchTable = {};\r\n var maxOffset = haystack.length - needle.length;\r\n var offset = 0;\r\n var last = needle.length - 1;\r\n var scan;\r\n\r\n if (last \u003C 0) return 0;\r\n\r\n for (var i = 0; i \u003C needle.length - 1; i\u002B\u002B) {\r\n badMatchTable[needle[i]] = last - i;\r\n }\r\n\r\n while (offset \u003C= maxOffset) {\r\n for (scan=last; needle[scan] === haystack[scan\u002Boffset]; scan--) {\r\n if (scan === 0) {\r\n return offset;\r\n }\r\n }\r\n\r\n offset \u002B= badMatchTable[haystack[offset \u002B last]] || last || 1;\r\n }\r\n return -1;\r\n}\r\n\r\nfunction randomString() {\r\n var text = \u0022\u0022;\r\n var possible = \u0022ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\u0022;\r\n\r\n for (var i = 0; i \u003C 5; i\u002B\u002B)\r\n text \u002B= possible.charAt(Math.floor(Math.random() * possible.length));\r\n\r\n return text;\r\n}\r\n \r\nvar str = randomString();\r\nvar findme = \u0022a\u0022;\r\nvar findmeRegex = new RegExp(find);","TestCases":[{"Name":"search","Code":"var result = str.search(findme);","IsDeferred":false},{"Name":"indexOf","Code":"var result = str.indexOf(findme) \u003E -1;","IsDeferred":false},{"Name":"includes","Code":"var result = str.includes(findme);","IsDeferred":false},{"Name":"test","Code":"var result = findmeRegex.test(str);","IsDeferred":false},{"Name":"match","Code":"var result = str.match(findmeRegex);","IsDeferred":false},{"Name":"boyerMooreHorspool","Code":"var result = boyerMooreHorspool(str, findmeRegex);","IsDeferred":false}]}