您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
none
// ==UserScript== // @name scratch extesion: string by rssaromeo // @version 2 // @description none // @run-at document-start // @author rssaromeo // @license GPLv3 // @tag lib // @match *://*/* // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAC1QTFRFAAAAGO0YDocO/////v/9//7///3/EIcOIYQO/v/////9E4YO/f/////+/f3/6+V7QQAAAA90Uk5TAP//////////////////5Y2epgAAAedJREFUeJy9lTtOAzEQhj0EgbQIWPMQUijSUXOEUNDQwAXQcgUKRAk1TdIiIZE7cADECZJLRKIAvG2QosXPmdmNvUnFSlk59uf/H3vtGRD4QI7NqqRebEnBH7UAsPk1DYiPExEAiVgYUTVAchWPKAbYIXJxhHsDCtRWofAFQaAepZ1tX+AFmquwg8oDZrC+TX7QUBAX8ISyQFTATdc/B0QE7HQHxB2chNJAwiFIQNIBgZSD94C0g5OAtMMKgPaowIYAuRKSnVRh/q3t/pitliaERWB/XupORUBvIukk6+7+WAPnzxawURRD2fliwOOg1DMGNx4QFydD2PtmgPEUynwLB8hsmm1yi6c7ExQD9Jbl/ML138XHpQfMPsLpuA74ZSkEjj5r65TDArqHEwI6O1XJ12ktewww+hw4M9ugBAFGH0YFAm/XMaA7ReD2tczuHziQeFYDksfBHft/AVqixBO1BAge0lykXPcez16uvIPgxx4BOSpCGquaQOfgV9kGB0IQpn99WxBgbxa7vN35rNzaIMBd3vbb7fNDewJZmoLaAMxyUQ/McgkJ5xCAeMUJqdgONk18JsZsH6t6VA4aBUewasAqDteggsNrFhEKRbDq0RcPM+N1sxElB5rEstpNuYSqP9dg6ewPfinyF4eDNn8AAAAASUVORK5CYII= // @grant none // @namespace https://greasyfork.org/users/1184528 // ==/UserScript== ;(async () => { await loadlib("libloader").waitforlib("scratchextesnsionmanager") const { newext, newmenu, newblock, bt, inp, gettarget, totype, scratch_math, projectid, canvas, scratchvar, scratchlist, } = loadlib("scratchextesnsionmanager") var vm loadlib("libloader") .waitforlib("scratch") .then(() => (vm = loadlib("scratch").vm)) newext( "string", "rssaromeo", class { strreplace({ replacethis, replacein, replacewith, count }) { replacethis = totype(replacethis, "string") replacein = totype(replacein, "string") replacewith = totype(replacewith, "string") count = totype(count, "number") if (count) { var i = 0 while (i++ < count) { replacein = replacein.replace(replacethis, replacewith) if (!replacein.includes(replacethis)) break } return replacein } else return replacein.replaceAll(replacethis, replacewith) } regreplace({ replacethis, flags, replacein, replacewith }) { flags = totype(flags, "string") ?? "" replacewith = totype(replacewith, "string") replacein = totype(replacein, "string") replacethis = totype(replacethis, "string") flags = flags.toLowerCase() if (!count && !flags.includes("g")) flags += "g" return replacein.replace( new RegExp(replacethis, flags), replacewith ) } substr({ string, start, end }) { string = totype(string, "string") start = totype(start, "number", 1) end = totype(end, "number", 1) return string.substring(start - 1, end) } indexof({ x, y }) { return x.indexOf(y) + 1 } lowercase({ string }) { string = totype(string, "string") return string.toLowerCase() } uppercase({ string }) { string = totype(string, "string") return string.toUpperCase() } splittoarr({ string, arr, chars }) { var [sprite, arrname] = JSON.parse(arr) scratchlist(arrname, string.split(chars), sprite) } joinfromarr({ arr, chars }) { var [sprite, arrname] = JSON.parse(arr) return ( scratchlist(arrname, undefined, sprite)?.join?.(chars) || false ) } string({ string }) { return totype(string, "string") } }, [ newblock( bt.ret, "strreplace", "string replace: in [replacein] replace [replacethis] with [replacewith], count: [count]", [ [inp.str, "some main text"], [inp.str, "main"], [inp.str, "other"], ] ), newblock( bt.ret, "regreplace", "regex replace: in [replacein] replace [replacethis][flags] with [replacewith]", [ [inp.str, "some main text"], [inp.str, "..."], [inp.str, "g"], [inp.str, "[$&]"], ] ), newblock(bt.ret, "substr", "[string] from [start] to [end]", [ [inp.str, "some main text"], [inp.num, "3"], [inp.num, "5"], ]), newblock(bt.ret, "indexof", "in [x], index of [y]", [ [inp.str, "some main text"], [inp.str, "main"], ]), newblock(bt.ret, "lowercase", "lowercase [string]", [ [inp.str, "Some main Text"], ]), newblock(bt.ret, "uppercase", "uppercase [string]", [ [inp.text, "Some main Text"], ]), newblock( bt.cmd, "splittoarr", "split [string] into [arr] by [chars]", [inp.str, newmenu("listnames", { defaultValue: "" }), inp.str] ), newblock(bt.ret, "joinfromarr", "join [arr] by [chars]", [ newmenu("listnames", { defaultValue: "" }), inp.str, ]), newblock(bt.ret, "string", "[string]"), ], "12B312", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAC1QTFRFAAAAGO0YDocO/////v/9//7///3/EIcOIYQO/v/////9E4YO/f/////+/f3/6+V7QQAAAA90Uk5TAP//////////////////5Y2epgAAAedJREFUeJy9lTtOAzEQhj0EgbQIWPMQUijSUXOEUNDQwAXQcgUKRAk1TdIiIZE7cADECZJLRKIAvG2QosXPmdmNvUnFSlk59uf/H3vtGRD4QI7NqqRebEnBH7UAsPk1DYiPExEAiVgYUTVAchWPKAbYIXJxhHsDCtRWofAFQaAepZ1tX+AFmquwg8oDZrC+TX7QUBAX8ISyQFTATdc/B0QE7HQHxB2chNJAwiFIQNIBgZSD94C0g5OAtMMKgPaowIYAuRKSnVRh/q3t/pitliaERWB/XupORUBvIukk6+7+WAPnzxawURRD2fliwOOg1DMGNx4QFydD2PtmgPEUynwLB8hsmm1yi6c7ExQD9Jbl/ML138XHpQfMPsLpuA74ZSkEjj5r65TDArqHEwI6O1XJ12ktewww+hw4M9ugBAFGH0YFAm/XMaA7ReD2tczuHziQeFYDksfBHft/AVqixBO1BAge0lykXPcez16uvIPgxx4BOSpCGquaQOfgV9kGB0IQpn99WxBgbxa7vN35rNzaIMBd3vbb7fNDewJZmoLaAMxyUQ/McgkJ5xCAeMUJqdgONk18JsZsH6t6VA4aBUewasAqDteggsNrFhEKRbDq0RcPM+N1sxElB5rEstpNuYSqP9dg6ewPfinyF4eDNn8AAAAASUVORK5CYII=" ) })()