【uniapp开发小程序】实现粘贴一段文字后,自动识别到姓名/手机号/收货地址

这篇具有很好参考价值的文章主要介绍了【uniapp开发小程序】实现粘贴一段文字后,自动识别到姓名/手机号/收货地址。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求

在uni-app中开发小程序,实现粘贴一段文字后自动识别到手机号,并将手机号前面的内容作为姓名,手机号后面的内容作为收货地址,并去除其中的特殊字符和前缀标识。

一、实现效果:

【uniapp开发小程序】实现粘贴一段文字后,自动识别到姓名/手机号/收货地址,uni-app,小程序
【uniapp开发小程序】实现粘贴一段文字后,自动识别到姓名/手机号/收货地址,uni-app,小程序

二、实现方式:(两种方式)

2.1第一种方式:前端通过使用正则的方式,对获取的数据进行判断

弊端:1.对于粘贴的内容,有局限性。2.复制的省市区不会渲染上。

<template>
	<view class="">
		<view  @click="pasteContent()">
			试试粘贴收件人姓名/手机号/收货地址,可快速识别 您的收货信息
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				addressData: {
					name: '',
					phone: '',
					details: '', //详细地址
				},
			}
		},
		methods: {
			//获取到剪切板的内容,快速识别收货地址
			pasteContent() {
				var that = this
				uni.getClipboardData({
					success: (res) => {
						const text = res.data;
						const phoneNumber = this.extractPhoneNumber(text);
						const name = this.extractName(text, phoneNumber);
						const address = this.extractAddress(text, phoneNumber);

						// 去除特殊字符和前缀标识
						const cleanedName = this.cleanText(name);
						const cleanedPhoneNumber = this.cleanText(phoneNumber);
						const cleanedAddress = this.cleanText(address);

						// 在这里可以对姓名、手机号和收货地址进行处理
						// 例如,将提取到的信息填充到表单中

						console.log('姓名:', cleanedName);
						console.log('手机号:', cleanedPhoneNumber);
						console.log('收货地址:', cleanedAddress);
						if (cleanedName != '') {
							that.addressData.name = cleanedName
						}
						if (cleanedPhoneNumber != '') {
							that.addressData.phone = cleanedPhoneNumber
						}
						if (cleanedAddress != '') {
							that.addressData.details = cleanedAddress
						}
					}
				});
			},
			//1姓名
			extractPhoneNumber(text) {
				const reg = /\d{11}/;
				const match = text.match(reg);
				const phoneNumber = match ? match[0] : '';
				return phoneNumber;
			},
			//2手机号
			extractName(text, phoneNumber) {
				const index = text.indexOf(phoneNumber);
				const name = index > 0 ? text.substring(0, index).trim() : '';
				return name;
			},
			//3地址
			extractAddress(text, phoneNumber) {
				const index = text.indexOf(phoneNumber);
				const address = index > 0 ? text.substring(index + phoneNumber.length).trim() : '';
				return address;
			},
			// 4去除特殊字符和前缀标识
			cleanText(text) {
				const cleanedText = text.replace(/\/|姓名:|手机号:|收货地址:|地址:/g, '');
				return cleanedText;
			},

		}
	}
</script>

分割线
分割线
分割线

2.2第二种方式:后台来进行判断,前端只负责展示。

其中收货地址是通过引用了Winglau14-address-auto-parse插件来处理的。
插件地址:https://ext.dcloud.net.cn/plugin?id=12080

效果图:【uniapp开发小程序】实现粘贴一段文字后,自动识别到姓名/手机号/收货地址,uni-app,小程序

插件导入后:【uniapp开发小程序】实现粘贴一段文字后,自动识别到姓名/手机号/收货地址,uni-app,小程序文章来源地址https://www.toymoban.com/news/detail-603922.html

具体代码:

<template>
	<view class="">
		<view class="onebox">
			<view class="item">
				<view class="lef">收货人</view>
				<input type="text" placeholder="请填写收货人姓名" v-model="addressData.name">
			</view>
			<view class="item">
				<view class="lef">手机号码</view>
				<view class="number">
					<view>
						<picker @change="bindPickerChange" :value="index" :range="topArray">
							<view class="uni-input">
								{{topArray[index]}}
								<image class="pickerimg" src="../../static/images/icon_jt@2x.png"></image>
							</view>
						</picker>
					</view>
					<input type="digit" placeholder="请填写收货人手机号" v-model="addressData.phone">
				</view>
			</view>
			<view class="item">
				<picker mode="multiSelector" @columnchange="addressPickerColumnChange" @change="addressChange"
					:value="addressIndex" :range="addressArray" range-key="name">
					<view class="addressbox">
						<view class="lef">所在地区</view>
						<input type="text" v-model="addressData.address" placeholder="请选择省市区县"
							placeholder-style="color: #9EA1A3;" :disabled="true">
					</view>
				</picker>
			</view>

			<view class="item">
				<view class="lef">详细地址</view>
				<input class="details_input" type="text" placeholder="街道、楼牌号等" v-model="addressData.details">
				<view class="dingwei" @click="getMapLocation()">
					<image src="../../static/images/icon_dw@2x(1).png"></image>定位
				</view>
			</view>
			<view class="lastitem">
				<view class="lasttext">
					<textarea placeholder="试试点击识别按钮,可快速识别 您的收货信息(收件人姓名、手机号、收货地址)" @change="autoParse"
						v-model="infos"></textarea>
					<image class="shibie" @click="autoParse" src="../../static/images/icon_sb@2x.png"></image>
				</view>
				<view class="copy">
					地址粘贴板
					<image src="../../static/images/icon_jt@2x.png"></image>
				</view>

			</view>
		</view>

		<view class="saveBtn" @click="submit()" v-if="addId == -1">保存</view>
		<view class="saveBtn" @click="editFun()" v-else>保存修改</view>
	</view>
</template>

<script>
	//一定要引入这个插件,确保省市区可以识别到
	import {
		parse,
		parseArea
	} from '../../uni_modules/Winglau14-address-auto-parse/components/Winglau14-address-auto-parse/lib/address-parse.js'
	export default {
		data() {
			return {
				baseUrl: this.$api.hostImages,
				topArray: ['+86'],
				addId: -1, //地址id

				index: 0,
				//省市区选择
				addressArray: [
					[],
					[],
					[]
				],
				addressIndex: [],
				is_default: false,
				addressData: {
					id: '',
					name: '',
					phone: '',
					span: '',
					is_default: 0, //0:正常   1:默认收获地址
					longitude: '118.06637', //经度
					latitude: '37.665928', //纬度

					province_id: '',
					city_id: '',
					area_id: '',
					address: '', //省-市-区
					details: '', //详细地址
				},

				value: '',
				infos: ''
			}
		},

		onShow() {
			this.getprovinceList()
		},
		onLoad(e) {
			console.log(e)
			this.addId = e.id
			if (e.id) {
				this.addressInfo(e.id)
			}
		},
		methods: {
			//点击识别收货信息
			autoParse() {
				var that = this
				if (!this.infos) {
					return uni.showToast({
						title: '请粘贴您需要识别的信息',
						icon: 'none'
					})
				}
				const infos = this.infos
				const result = parse(infos)
				console.log('打印一下获取到的信息', result)
				if(result.name != ''){
					that.addressData.name = result.name
				}
				if(result.mobile != ''){
					that.addressData.phone = result.mobile
				}
				if(result.province != ''){
					that.addressData.province = result.province  //省
				}
				if(result.city != ''){
					that.addressData.city = result.city //市
				}
				if(result.area != ''){
					that.addressData.area = result.area //区
				}
				if(result.addr != ''){
					that.addressData.details = result.addr  //详细地址
				}
				console.log('打印一下addr', that.addressData.details)
				if(result.province != ''){
					that.addressData.address = result.province + '-' + result.city + '-' + result.area
				}
			},

			
		}
	}
</script>

OK~

到了这里,关于【uniapp开发小程序】实现粘贴一段文字后,自动识别到姓名/手机号/收货地址的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp 前端实现文字识别,身份证识别,营业执照识别 (兼容APP、H5、小程序 不需要任何SDK)

    本文将介绍如何使用uniapp和百度AI开放平台的OCR(光学字符识别)API实现身份证、营业执照等卡证的识别和文字识别功能。 APP 小程序 H5 √ √ √ 1. 注册百度账号 前往百度AI开放平台官网,点击“登录”。使用百度账号登录,如果没有可以先注册百度账号。 登录成功后,点击右上角

    2024年02月10日
    浏览(52)
  • android 中一段文字设置不同颜色

    目录 一、使用HTML 、strings.xml 辅助完成 二、SpannableStringBuilder 来实现         我们都会遇到UI给的效果图中,一段文字,却用 不同的颜色 显示以突出重点。我们平常用到都是使用TextView设置textColor就可以了,如何设置多种颜色呢,有两种方法:         比如说

    2024年02月16日
    浏览(33)
  • tinymce4/5实现将word中内容(文字图片等)直接粘贴至编辑器中——利用插件tinymce-powerpaste-plugin

    TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器。同类程序有:UEditor、Kindeditor、Simditor、CKEditor、wangEditor、Suneditor、froala等等。 TinyMCE的优势: 开源可商用,基于LGPL2.1 插件丰富,自带插件基本涵盖日常所需功能(示例看下面的Demo-2) 接口丰富,可扩展性强,有

    2024年02月15日
    浏览(43)
  • mac与pd虚拟机之间不能粘贴文字或粘贴文件

    一个简单的判断方式就是,退出虚拟机全屏之后,如果能够正常进入融合模式,那么Parallels Tools可用,否则就要排查问题 检查 Parallels Tools是否随系统正常启动: 1、开启虚拟机, 在任务管理器中,搜索 如果没有启动那么启动 2、到 C:/Program Files/Parallels/Parallels Tools/ (C:/Progra

    2024年02月13日
    浏览(52)
  • uniapp开发小程序部分功能实现详解

    1. 创建tabBar页面         在 pages 下面创建,右键新建页面,这里创建的是 tanBar 对应的几个页面;记住这里要勾选\\\"创建同名目录、在pages.json 中注册\\\"两个选项,默认是选中的;(home、cate、cart、my) 2. 配置tabBar 在pages.json文件中,在pages平级新增tabBar的配置: 由于小程序不支

    2024年02月05日
    浏览(35)
  • 关于小程序uniapp同声传译(语音转文字)

    1. 首先我们先在开发者工具给他添加第三方插件 然后我们在 小程序的manifest.json切换成源码视图 然后在appid同级目录添加插件 其中provider是第三方插件的appid 然后在你要进行翻译的文件里面引入    

    2024年02月15日
    浏览(49)
  • 华为手机备忘录编辑内容误删一段文字怎么恢复

    华为手机上可以使用备忘录软件来记事,既可以选择系统自带的备忘录,也支持从应用市场搜索第三方好用的备忘录,比如云便签。那么,华为手机备忘录编辑内容误删一段文字怎么恢复呢? 当使用系统自带的备忘录时,那么在编辑笔记内容后,点击右上角的撤回按钮,可撤

    2024年02月09日
    浏览(31)
  • uniapp开发小程序-实现中间凸起的 tabbar

    1.首先在 pages.json 文件中进行tabbar的样式和列表配置,代码如下: 2.在components文件中封装一个Tabbar 组件,命名为 TabBar.vue 代码如下: 3.在 mian.js 全局注册组件 4.在页面中使用组件

    2024年02月14日
    浏览(37)
  • 【UniApp开发小程序】请求包创建+登录功能实现

    项目基于若依管理系统进行开发,部分接口来源于若依管理系统后端项目,如本文的登录接口、获取验证码接口。 小程序的数据需要向后端发请求进行获取,为了简化后续的开发,需要创建一个包专门存放所有发请求的js方法。 创建api的存放包 再创建工具js的存放包 注意使

    2024年02月16日
    浏览(44)
  • uniapp小程序通过canvas给图片叠加自定义文字

    功能背景 之前文章uniapp小程序开发自定义相机、拍照、上传提到的前端给图片叠加文字水印的操作。比如想要一张照片上,叠加上自定义的文字。 效果图 保存到本地 放大看看 功能说明 借助于uniapp的API: 第一步 uni.getImageInfo 或者 uni.downloadFile ,把在线图片加载出来,拿到临

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包