热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

swift检测字符串是否在数组字符串中

https:www.jianshu.comp56da83a4e0ab   检测到敏感词标红  privatefuncrichTextInputChange(text:NSMutab

https://www.jianshu.com/p/56da83a4e0ab  

 

/// 检测到敏感词标红

    private func richTextInputChange(text: NSMutableAttributedString,word: String) -> NSMutableAttributedString {

        let range = (text.string as NSString).range(of: word)

        return applyRichTextInputChange(text: text, word: word, range: range, last: range)

    }

    

    private func applyRichTextInputChange(text: NSMutableAttributedString,word: String,range: NSRange,last: NSRange) -> NSMutableAttributedString {

        if range.location != NSNotFound {

            text.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.State.fail, range: range)

            text.addAttribute(NSAttributedString.Key.font, value: 15.yp_font, range: range)

            let start = last.location + last.length

            let end = text.string.count+1 - start

            let stringRange = NSRange(location: start, length: end)

            let newString = text.string as NSString

            let newRange = newString.range(of: word, options: [], range: stringRange)

            let _ = applyRichTextInputChange(text: text, word: word, range: newRange, last: range)

        }

        return text

    }

 

 

第二种方法

extension YPFastRecruitHeaderView {

    /// 检查是否包含敏感词

    func contentHasSensitiveWord(textString: String){

        let words = YPFastIssueCofigWordModel.shared?.thesaurusList ?? []

        if let _ = words.first(where: {textString.contains($0)}) {

            contentHasSensitive.accept(true)

        }else{

            contentHasSensitive.accept(false)

        }

    }

    

    /// 检测到敏感词标红

    func richTextInputChange(text: NSMutableAttributedString,word: String) -> NSMutableAttributedString {

        return textRegex(pattern: word, attributeString: text, color: UIColor.State.fail)

    }

        

    // 1.匹配纯文本

    func textRegex(pattern: String,

                   attributeString: NSMutableAttributedString,

                   color: UIColor) -> NSMutableAttributedString{

        

        //富文本contentAttributeString

        let cOntent= attributeString.string

        do {

            // 1.1.定义规则

            //let pattern = "ben"

            // 1.2.创建正则表达式对象

            let regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)

            // 1.3.开始匹配

            let res = regex.matches(in: content, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, content.count))

            

            for checkingRes in res{

                //设置字体颜色

                attributeString.addAttribute(NSAttributedString.Key.foregroundColor, value: color,range: checkingRes.range)

            }

            return attributeString

            

        } catch {

            

            print(error)

        }

        return attributeString

    }

}

 



推荐阅读
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Excel数据处理中的七个查询匹配函数详解
    本文介绍了Excel数据处理中的七个查询匹配函数,以vlookup函数为例进行了详细讲解。通过示例和语法解释,说明了vlookup函数的用法和参数的含义,帮助读者更好地理解和运用查询匹配函数进行数据处理。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 热血合击脚本辅助工具及随机数生成器源码分享
    本文分享了一个热血合击脚本辅助工具及随机数生成器源码。游戏脚本能够实现类似真实玩家的操作,但信息量有限且操作不可控。热血合击脚本辅助工具可以帮助玩家自动刷图、换图拉怪等操作,并提供了雷电云手机的扩展服务。此外,还介绍了使用mt_rand函数作为随机数生成器的代码示例。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
author-avatar
wesley_zx
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有