{"ScriptPreparationCode":"var TestString = \u0027-=\u002B\u0027.repeat(200) \u002B \u0027=\u0027.repeat(20000) \u002B \u0027=\u002B-\u0027.repeat(200);\r\n\r\nfunction indexTrim(str, ch) {\r\n var start = 0, \r\n end = str.length;\r\n\r\n while(start \u003C end \u0026\u0026 ch.includes(str[start]))\r\n \u002B\u002Bstart;\r\n\r\n while(end \u003E start \u0026\u0026 ch.includes(str[end - 1]))\r\n --end;\r\n\r\n return (start \u003E 0 || end \u003C str.length) ? str.substring(start, end) : str;\r\n}\r\nfunction indexTrimSingle(str, ch) {\r\n var start = 0, \r\n end = str.length;\r\n\r\n while(start \u003C end \u0026\u0026 str[start] === ch)\r\n \u002B\u002Bstart;\r\n\r\n while(end \u003E start \u0026\u0026 str[end - 1] === ch)\r\n --end;\r\n\r\n return (start \u003E 0 || end \u003C str.length) ? str.substring(start, end) : str;\r\n}\r\n","TestCases":[{"Name":"Index Version (Jason Larke) (with array)","Code":"indexTrim(TestString, [\u0027\u002B\u0027,\u0027=\u0027,\u0027-\u0027]);","IsDeferred":false},{"Name":"Index Version (Jason Larke)","Code":"indexTrimSingle(TestString, \u0027-\u0027);","IsDeferred":false}]}