From da13f5e218edc4c4a04b42cf04f8f3cb8b8c51bb Mon Sep 17 00:00:00 2001 From: Gabe Yuan Date: Thu, 7 Sep 2023 10:20:08 +0800 Subject: [PATCH] add isAllchar func --- src/libs/subRules.js | 3 ++- src/libs/utils.js | 26 ++++++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/libs/subRules.js b/src/libs/subRules.js index 2c9b6a0..af8cba1 100644 --- a/src/libs/subRules.js +++ b/src/libs/subRules.js @@ -7,6 +7,7 @@ import { } from "./storage"; import { apiFetchRules } from "../apis"; import { checkRules } from "./rules"; +import { isAllchar } from "./utils"; /** * 同步订阅规则 @@ -16,7 +17,7 @@ import { checkRules } from "./rules"; export const syncSubRules = async (url, isBg = false) => { const res = await apiFetchRules(url, isBg); const rules = checkRules(res).filter( - (rule) => rule.pattern.replaceAll(GLOBAL_KEY, "") !== "" + ({ pattern }) => !isAllchar(pattern, GLOBAL_KEY) ); if (rules.length > 0) { await setSubRules(url, rules); diff --git a/src/libs/utils.js b/src/libs/utils.js index 5483c59..6fad207 100644 --- a/src/libs/utils.js +++ b/src/libs/utils.js @@ -57,6 +57,23 @@ export const debounce = (func, delay = 200) => { }; }; +/** + * 判断字符串全是某个字符 + * @param {*} s + * @param {*} c + * @param {*} i + * @returns + */ +export const isAllchar = (s, c, i = 0) => { + while (i < s.length) { + if (s[i] !== c) { + return false; + } + i++; + } + return true; +}; + /** * 字符串通配符(*)匹配 * @param {*} s @@ -91,14 +108,7 @@ export const isMatch = (s, p) => { return true; } - while (pIndex < p.length) { - if (p[pIndex] !== "*") { - return false; - } - pIndex++; - } - - return true; + return isAllchar(p, "*", pIndex); }; /**