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

免费手机网站app中国公路工程建设网站

免费手机网站app,中国公路工程建设网站,手机网页开发框架,广告平面设计工作内容原理分析 说白了就是解析特定格式的文字#xff0c;并将处理好的内容回填到需要的表单中。 为了程序的健壮性#xff0c;我们解析时需要考虑多种情况。 1、文字行数 单行和多行的解析可以分开 单行的情况如下面这种#xff0c; 姓名: 七七 电话#xff1a;788 邮箱并将处理好的内容回填到需要的表单中。 为了程序的健壮性我们解析时需要考虑多种情况。 1、文字行数 单行和多行的解析可以分开 单行的情况如下面这种 姓名: 七七 电话788 邮箱qiqiqiqi.com 地址啊啊啊多行的情况可能是 姓名: 七七 电话788 邮箱qiqiqiqi.com 地址啊啊啊多行用:const lines text?.split(\n);分开解析即可 2、中英文冒号兼容 在填写地址时用户可能打中文冒号或者英文冒号我们需要兼容确保识别分割的时候程序不会出问题。 split(/[:]/)即可 当然这里也可以写正则去分割空格的情况。 3、移除文本信息前后的无用空格 用trim()没什么好说的 4、关键信息匹配 我们需要自定义一个关键词汇库去匹配剪贴板文本信息我们可以考虑所有关键信息放进一个词汇库也可以根据表单字段数量分开创建多个词汇库。 列如 1、词汇库放在一起 const keywords [姓名,名字,电话,电话号码,号码,手机,手机号,手机号码,邮箱,邮箱地址,邮件,地址,详细地址使用这种放一起的关键字的匹配优势就是词汇库放一起比较灵活但是后期处理文本信息的时候略微繁琐需要拿到一段信息后把这段信息移除否则会干扰下一段信息的获取。 2、多个词汇库 const nameKeywords [姓名,名字,联系人] const phoneKeywords [电话,电话号码,号码,手机,手机号,手机号码] const emailKeywords [ 邮箱,邮箱地址,邮件] const addressKeywords [地址,详细地址]缺点是每个关键字词库只能匹配特定的字段有多少个字段就需要多少个词汇库。 优点可以精准匹配大大简化操作。 实践 我们这里用多个词汇库举例单个词汇库代码太多了懒得写下次想起来再更新。 1、获取粘贴板内容 无论你用的那个技术栈总有获取粘贴板内容的方法自己用ai搜下就行用框架的可以搜对应框架的api原生的就搜js获取。 2、解析 定义多个关键字库 const nameKeywords [姓名, 名字, 收件人]; // 匹配姓名关键字const phoneKeywords [电话, 手机号码, 手机号, 手机, 联系电话]; // 匹配号码关键字const provinceKeywords [所在地区, 省市区]; // 匹配省市区关键字const addressKeywords [详细地址, 地址, 完整地址]; // 匹配详细地址关键字正则先匹配一遍关键字和值 let name ;let phone ;let provinceCode: string[] [];let address ;// 使用正则表达式匹配关键字和值const regex new RegExp((${nameKeywords.join(|)})[:](.*?)(${phoneKeywords.join(|,)})[:](.*?)(${provinceKeywords.join(|)})[:](.*?)(${addressKeywords.join(|,)})[:](.*),i,);const match text.match(regex);区分单行和多行处理方式 if (match) {// 动态解析关键字和值处理一行格式的情况const parsedFields {[match[1]]: match[2].trim(),[match[3]]: match[4].trim(),[match[5]]: match[6].trim(),[match[7]]: match[8].trim(),};name nameKeywords.some(keyword keyword in parsedFields)? parsedFields[nameKeywords.find(keyword keyword in parsedFields)!]: ;phone phoneKeywords.some(keyword keyword in parsedFields)? parsedFields[phoneKeywords.find(keyword keyword in parsedFields)!]: ;const provinceText provinceKeywords.some(keyword keyword in parsedFields)? parsedFields[provinceKeywords.find(keyword keyword in parsedFields)!]: ;address addressKeywords.some(keyword keyword in parsedFields)? parsedFields[addressKeywords.find(keyword keyword in parsedFields)!]: ;provinceCode pareProvinceText(provinceText);}// 处理多行格式的情况else {let provinceText ;const lines text?.split(\n);lines.forEach(line {const trimmedLine line.trim();if (nameKeywords.some(keyword trimmedLine.includes(keyword))) {name trimmedLine.split(/[:]/).pop()?.trim() || ; // 中英文冒号处理} else if (phoneKeywords.some(keyword trimmedLine.includes(keyword))) {phone trimmedLine.split(/[:]/).pop()?.trim() || ;} else if (provinceKeywords.some(keyword trimmedLine.includes(keyword))) {provinceText trimmedLine.split(/[:]/).pop()?.trim() || ;} else if (addressKeywords.some(keyword trimmedLine.includes(keyword))) {address trimmedLine.split(/[:]/).pop()?.trim() || ;}});provinceCode pareProvinceText(provinceText);}上面这里pareProvinceText这个函数是我自己的业务函数处理省市区的你们不用管 将结果回填 let name ;let phone ;let provinceCode: string[] [];let address ;上面的变量是我们保存的结果回填到需要的地方就行了。 完整示例用的react-native) import Clipboard from react-native-clipboard/clipboard;// 解析省市区粘贴板const pareProvinceText (provinceText: string) {const provinceCode: any[] [];let cityList: any[] []; // 某省下所有市let districtList: any[] []; // 某省某区下所有区let provinceName ;areaList?.some((item: any) {if (provinceText.includes(item?.label)) {provinceName item?.label;provinceCode.push(item?.value); // 获取匹配到的省codecityList item?.children;}});cityList?.some((item: any) {if (provinceText?.includes(item?.label)) {provinceCode.push(item?.value); // 获取匹配到的市codedistrictList item?.children;}});districtList?.some((item: any) {if (provinceText?.includes(item?.label)) {provinceCode.push(item?.value); // 获取匹配到的区codedistrictList item?.children;}});return provinceCode;};// 识别剪切板const onCheckClipboard () {Clipboard.getString().then(text {console.log(text, text);if (!text) {return Toast.text(剪切板无内容);}const nameKeywords [姓名, 名字, 收件人]; // 匹配姓名关键字const phoneKeywords [电话, 手机号码, 手机号, 手机, 联系电话]; // 匹配号码关键字const provinceKeywords [所在地区, 省市区]; // 匹配省市区关键字const addressKeywords [详细地址, 地址, 完整地址]; // 匹配详细地址关键字let name ;let phone ;let provinceCode: string[] [];let address ;// 使用正则表达式匹配关键字和值const regex new RegExp((${nameKeywords.join(|)})[:](.*?)(${phoneKeywords.join(|,)})[:](.*?)(${provinceKeywords.join(|)})[:](.*?)(${addressKeywords.join(|,)})[:](.*),i,);const match text.match(regex);if (match) {// 动态解析关键字和值处理一行格式的情况const parsedFields {[match[1]]: match[2].trim(),[match[3]]: match[4].trim(),[match[5]]: match[6].trim(),[match[7]]: match[8].trim(),};name nameKeywords.some(keyword keyword in parsedFields)? parsedFields[nameKeywords.find(keyword keyword in parsedFields)!]: ;phone phoneKeywords.some(keyword keyword in parsedFields)? parsedFields[phoneKeywords.find(keyword keyword in parsedFields)!]: ;const provinceText provinceKeywords.some(keyword keyword in parsedFields)? parsedFields[provinceKeywords.find(keyword keyword in parsedFields)!]: ;address addressKeywords.some(keyword keyword in parsedFields)? parsedFields[addressKeywords.find(keyword keyword in parsedFields)!]: ;provinceCode pareProvinceText(provinceText);}// 处理多行格式的情况else {let provinceText ;const lines text?.split(\n);lines.forEach(line {const trimmedLine line.trim();if (nameKeywords.some(keyword trimmedLine.includes(keyword))) {name trimmedLine.split(/[:]/).pop()?.trim() || ; // 中英文冒号处理} else if (phoneKeywords.some(keyword trimmedLine.includes(keyword))) {phone trimmedLine.split(/[:]/).pop()?.trim() || ;} else if (provinceKeywords.some(keyword trimmedLine.includes(keyword))) {provinceText trimmedLine.split(/[:]/).pop()?.trim() || ;} else if (addressKeywords.some(keyword trimmedLine.includes(keyword))) {address trimmedLine.split(/[:]/).pop()?.trim() || ;}});provinceCode pareProvinceText(provinceText);}// 更新表单数据formRef.current?.setData({receiver: name,phone,addressCode: provinceCode,address,});}).catch(error {console.log(error);});};参考1、2就行其他技术栈原理类似。 不懂得留言问。加呐
http://www.hkea.cn/news/14451711/

相关文章:

  • 可以做用户调研的网站wordpress主题汉化插件下载
  • 网站默认首页怎么设置服务器做php网站
  • 社交网站开发意义wordpress安装到阿里云主机
  • 网站静态路径网站优化软件
  • 做电影网站一年赚多少钱网站后台传照片 c windows temp 拒绝访问
  • p2p做网站wordpress如何添加导航
  • 郑州微网站建设公司wordpress ent主题
  • php网站源程序保定网站设计推荐
  • 怎么制定网站怎么做网站免费
  • 合肥专业手机网站制作价格金华手机模板建站
  • 网站音乐播放代码百度问答app下载
  • 三 网站建设不用开源程序怎么做网站
  • 装饰公司网站建设服装 多语言 网站源码
  • 网站推广新手入门教程广州seo代理
  • 做asp网站需要的实验报告单建立网站涉及到哪些企业
  • 哈尔滨信息网0451沧州网站建设优化
  • 东莞网站推广大全网站建设与网页设计难学吗
  • 单位做网站需要多少钱wordpress同时使用双主题
  • 代刷网可以做网站地图网站建设 长期待摊
  • 手工艺品网站模板北京城乡与建设厅官方网站查询
  • 怎么做淘课网站北京南站是高铁站吗
  • 如何查网站点击量如何注册一个自己的品牌
  • 深圳外贸网站建设服务商公司域名申请流程
  • 北京网站设计公司兴田德润信任高上海做网站多少钱
  • 上海百度seo网站优化网站后台文件名
  • 兰州做网站企业网站开发 科技
  • 秦皇岛做网站公司wordpress 同步 博客园
  • 网站域名过期未续费怎么办张家界网站制作公司
  • 商业网站开发宁波网站建设免费咨询
  • .net做网站c省水利工程建设信息网站