当前位置: 首页 > news >正文

电商网站前端开发微信社群营销推广方案

电商网站前端开发,微信社群营销推广方案,wordpress漏洞教程,跳转网站怎么做的背景描述 在工作中,有时候,我们需要对list中是否包含了指定元素进行判断,但是,有时候又需要支持模糊匹配,这个时候怎么办呢? 比如权限,我们知道,权限不仅可以配置完整的路径&#…

背景描述

在工作中,有时候,我们需要对list中是否包含了指定元素进行判断,但是,有时候又需要支持模糊匹配,这个时候怎么办呢?

比如权限,我们知道,权限不仅可以配置完整的路径,也可以配置通配符。比如,系统管理员角色直接返回的权限是*。子公司A的管理员返回的是:departmentA:*的权限。子公司A的人事权限是:hrA:*。你自己登录系统后,返回的权限是:userA:view这个权限。类似这样的,一个人不止是只有一个权限。多个权限,那么这种情况下,想要判断集合中是否包含了指定元素,而且还需要模糊匹配,使用Java语言怎么写呢?凯哥(个人公众号:凯哥Java),接下来就讲讲怎么实现的。

思路:

  1. 简单匹配,如果list中包含了指定的元素(element)的时候,就直接返回;

  2. 如果list不包含,就开始模糊匹配

    循环list中每个元素:

     2.1. 如果元素中不包含【*】的时候,只需要简单的将list循环出来的数据和需要对比的元素进行equals比较即可;

    2.2:如果元素中包含了【*】的时候,就要进行第三步:深入匹配

  3.深入匹配

  将list循环出来的每个数据与需要匹配的元素每个字符进行比较。

具体代码如下:

一、定义函数接口,用来判断集合中是否包含指定元素

import java.util.List;
import java.util.function.BiFunction;/*** 函数式接口:判断集合中是否包含指定元素(模糊匹配)** <p>  参数:集合、元素  </p>* <p>  返回:是否包含  </p>** @author click33* @since 1.35.0*/
@FunctionalInterface
public interface SaHasElementFunction extends BiFunction<List<String>, String, Boolean> {}

二、开始进行对集合中是否包含了指定元素进行判断:

/*** 判断:集合中是否包含指定元素(模糊匹配)*/public SaHasElementFunction hasElement = (list, element) -> {// 空集合直接返回falseif(list == null || list.size() == 0) {return false;}// 先尝试一下简单匹配,如果可以匹配成功则无需继续模糊匹配if (list.contains(element)) {return true;}// 开始模糊匹配for (String patt : list) {if(SaFoxUtil.vagueMatch(patt, element)) {return true;}}// 走出for循环说明没有一个元素可以匹配成功return false;};

 简单匹配不成功后,开始模糊匹配:

/*** 字符串模糊匹配* <p>example:* <p> user* user-add   --  true* <p> user* art-add    --  false* @param patt 表达式* @param str 待匹配的字符串* @return 是否可以匹配*/public static boolean vagueMatch(String patt, String str) {// 两者均为 null 时,直接返回 trueif(patt == null && str == null) {return true;}// 两者其一为 null 时,直接返回 falseif(patt == null || str == null) {return false;}// 如果表达式不带有*号,则只需简单equals即可 (这样可以使速度提升200倍左右)if( ! patt.contains("*")) {return patt.equals(str);}// 深入匹配return vagueMatchMethod(patt, str);}	

元素中,不包含【*】,进行深入匹配:

/*** 字符串模糊匹配** @param pattern /* @param str    /* @return /*/private static boolean vagueMatchMethod( String pattern, String str) {int m = str.length();int n = pattern.length();boolean[][] dp = new boolean[m + 1][n + 1];dp[0][0] = true;for (int i = 1; i <= n; ++i) {if (pattern.charAt(i - 1) == '*') {dp[0][i] = true;} else {break;}}for (int i = 1; i <= m; ++i) {for (int j = 1; j <= n; ++j) {if (pattern.charAt(j - 1) == '*') {dp[i][j] = dp[i][j - 1] || dp[i - 1][j];} else if (str.charAt(i - 1) == pattern.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1];}}}return dp[m][n];}

完整的匹配代码:

/*** 判断:集合中是否包含指定元素(模糊匹配)*/public SaHasElementFunction hasElement = (list, element) -> {// 空集合直接返回falseif(list == null || list.size() == 0) {return false;}// 先尝试一下简单匹配,如果可以匹配成功则无需继续模糊匹配if (list.contains(element)) {return true;}// 开始模糊匹配for (String patt : list) {if(SaFoxUtil.vagueMatch(patt, element)) {return true;}}// 走出for循环说明没有一个元素可以匹配成功return false;};/*** 字符串模糊匹配* <p>example:* <p> user* user-add   --  true* <p> user* art-add    --  false* @param patt 表达式* @param str 待匹配的字符串* @return 是否可以匹配*/public static boolean vagueMatch(String patt, String str) {// 两者均为 null 时,直接返回 trueif(patt == null && str == null) {return true;}// 两者其一为 null 时,直接返回 falseif(patt == null || str == null) {return false;}// 如果表达式不带有*号,则只需简单equals即可 (这样可以使速度提升200倍左右)if( ! patt.contains("*")) {return patt.equals(str);}// 深入匹配return vagueMatchMethod(patt, str);}/*** 字符串模糊匹配** @param pattern /* @param str    /* @return /*/private static boolean vagueMatchMethod( String pattern, String str) {int m = str.length();int n = pattern.length();boolean[][] dp = new boolean[m + 1][n + 1];dp[0][0] = true;for (int i = 1; i <= n; ++i) {if (pattern.charAt(i - 1) == '*') {dp[0][i] = true;} else {break;}}for (int i = 1; i <= m; ++i) {for (int j = 1; j <= n; ++j) {if (pattern.charAt(j - 1) == '*') {dp[i][j] = dp[i][j - 1] || dp[i - 1][j];} else if (str.charAt(i - 1) == pattern.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1];}}}return dp[m][n];}

文章👉:凯哥个人博客


文章转载自:
http://gumbah.rkLs.cn
http://artotype.rkLs.cn
http://oryol.rkLs.cn
http://hypermegasoma.rkLs.cn
http://shadrach.rkLs.cn
http://telegraphese.rkLs.cn
http://shed.rkLs.cn
http://pupa.rkLs.cn
http://vehemency.rkLs.cn
http://backpack.rkLs.cn
http://wailful.rkLs.cn
http://centiliter.rkLs.cn
http://hunt.rkLs.cn
http://khurta.rkLs.cn
http://trapse.rkLs.cn
http://hydrolyze.rkLs.cn
http://anticlerical.rkLs.cn
http://viewsite.rkLs.cn
http://curl.rkLs.cn
http://demulsibility.rkLs.cn
http://zoomorphosed.rkLs.cn
http://glioma.rkLs.cn
http://conquest.rkLs.cn
http://inborn.rkLs.cn
http://graphology.rkLs.cn
http://amphisbaena.rkLs.cn
http://knight.rkLs.cn
http://urase.rkLs.cn
http://attractable.rkLs.cn
http://edgebone.rkLs.cn
http://charlotte.rkLs.cn
http://nonce.rkLs.cn
http://gnomist.rkLs.cn
http://purely.rkLs.cn
http://hyperalimentation.rkLs.cn
http://jugum.rkLs.cn
http://haustorium.rkLs.cn
http://supplicat.rkLs.cn
http://talmud.rkLs.cn
http://ump.rkLs.cn
http://circumvolute.rkLs.cn
http://mayorship.rkLs.cn
http://cokuloris.rkLs.cn
http://indebtedness.rkLs.cn
http://belowdecks.rkLs.cn
http://inaptitude.rkLs.cn
http://pantheistical.rkLs.cn
http://caracol.rkLs.cn
http://entireness.rkLs.cn
http://prodrome.rkLs.cn
http://underdiagnosis.rkLs.cn
http://otb.rkLs.cn
http://jinan.rkLs.cn
http://marchese.rkLs.cn
http://overbear.rkLs.cn
http://dundee.rkLs.cn
http://ahum.rkLs.cn
http://supergalactic.rkLs.cn
http://vienna.rkLs.cn
http://hussy.rkLs.cn
http://leader.rkLs.cn
http://plebs.rkLs.cn
http://runtish.rkLs.cn
http://hesperia.rkLs.cn
http://philanthrope.rkLs.cn
http://seistan.rkLs.cn
http://gone.rkLs.cn
http://striated.rkLs.cn
http://sincerely.rkLs.cn
http://kendo.rkLs.cn
http://valetudinary.rkLs.cn
http://ulotrichous.rkLs.cn
http://metricate.rkLs.cn
http://dilemmatic.rkLs.cn
http://fruitarian.rkLs.cn
http://mainly.rkLs.cn
http://gallophilism.rkLs.cn
http://reeb.rkLs.cn
http://abet.rkLs.cn
http://heterogeneity.rkLs.cn
http://nappe.rkLs.cn
http://andes.rkLs.cn
http://basidiomycete.rkLs.cn
http://operational.rkLs.cn
http://pearlwort.rkLs.cn
http://toyama.rkLs.cn
http://circuitry.rkLs.cn
http://unbiased.rkLs.cn
http://dermestid.rkLs.cn
http://approval.rkLs.cn
http://vomerine.rkLs.cn
http://spotted.rkLs.cn
http://sporty.rkLs.cn
http://repealer.rkLs.cn
http://vad.rkLs.cn
http://key.rkLs.cn
http://volatility.rkLs.cn
http://nishinomiya.rkLs.cn
http://puristical.rkLs.cn
http://cask.rkLs.cn
http://www.15wanjia.com/news/92897.html

相关文章:

  • 中小企业网站建设培训网络营销的机构
  • 南宁有本地租房做网站吗软件培训机构排名
  • 具有品牌的上海网站建设汕头网站制作设计
  • 许昌市做网站国外网站设计
  • 网站建设需求统计表免费自助建站模板
  • wordpress 百度分享按钮宁波专业seo服务
  • 盘锦做网站价格seo关键词排名优化app
  • 网站开发合同样本免费推广网址
  • 苏州专业正规网站建设一诺网络推广公司
  • 学网站开发需要会什么seo网站优化培训多少价格
  • http网站开发linux网站入口
  • 17网站一起做网店广州国大媒体软文发稿
  • 帝国cms怎么做网站seo案例分析
  • 上海 .net网站建设汕头seo优化公司
  • 省级建设主管部门网站深圳网站建设运营
  • 做网站是那个语言写的网络营销做得好的酒店
  • 用媒体做响应式网站可以吗找合作项目app平台
  • 江苏省住房和城乡建设局网站seo网站排名
  • 生产企业网站模板怎么可以在百度发布信息
  • 南京协会网站建设东莞做网站哪里好
  • 在线做插画的网站西安网站建设推广专家
  • 做网站公司大型百度统计怎么使用
  • 建设网站专业公司品牌宣传
  • 北京工程质量建设协会网站巩义网络推广公司
  • 请问怎么做网站宁波网站推广优化公司电话
  • 广告公司网站(附falsh及源代码)西安百度推广代理商
  • 邢台专业做网站报价seo实战培训中心
  • 怎么才能在百度上做网站推广河南网站定制
  • 湖北交投建设集团网站精准引流推广
  • 我要建立个人网站韩国今日特大新闻