首页 > 编程知识 正文

支付宝口令截,支付宝口令红包截取

时间:2023-05-04 03:34:12 阅读:251855 作者:3983

最近支付宝扫码领红包,复制邀请码领红包的活动开展得如火如荼,期间层出不迭一些套路,将自己的支付宝邀请码混杂在一段有趣的文字中,让用户打开支付宝,以此获得奖金,比如这样式的:

受朋友之托征婚 女,kxdz,26岁,未婚,上海本地人,身高1米65,体重48公斤,复旦大学毕业。漂亮大方,爱好旅游,健身美体,游泳。目前在上海张江一家中国500强公司任职,工作稳定,年薪50万。上海有2套房,1套在汤臣豪园,一辆特斯拉代步,车牌号OOmTmz89aA,一辆smart代步,车牌k2798,人务实、不拜金,一直没有合适的能干的柠檬, 她本人要求一点也不高且她家人现在非常着急,发动亲戚朋友想请大家给介绍一个。【复制本文到支付宝APP打开可见详情照片!】

将这段话复制在剪切板,再打开支付宝就能领取红包,那么问题来了,支付宝是怎么办到的呢?在如此大一段话中找到你的邀请码,此篇文章将浅显的实现一下类似功能。

分三步

拿到剪切板的内容从剪切板中截取出邀请码将邀请码传递给后台

在此我们只需要实现前两步

剪切板与我们的应用处于两个进程,进程间通信暂且不表,幸好Android给我们提供了剪切板的系统服务

ClipboardManager manager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);if (!manager.hasPrimaryClip()) { //剪切板内无内容 return; }ClipData clipData = manager.getPrimaryClip();String text = clipData.getItemAt(0).getText().toString();

第一步就完成了,现在实现第二步,截取出邀请码。
通过我的观察,发现邀请码的组成都是10位的数字和大小写字母,知道这一点就很好实现了,贴出代码

private String findSpecialString(String text, int findStringLength) { int findLength = 0; //查找到的长度 char[] chars = text.toCharArray(); for (int i = 0, length = chars.length; i < length; i++) { char c = chars[i]; if (Character.isDigit(c) || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { //是否是字母或数字 findLength++; } else { findLength = 0; } if (findStringLength == findLength) { //找到了 int startIndex = i - findStringLength; StringBuilder builder = new StringBuilder(); while (startIndex != i) { builder.append(chars[++startIndex]); } return builder.toString(); } } return null; }

可以看到我这里还加了个参数来避免了硬编码10位的字母或数字,改变这个参数值,可以实现查找任意位数的连续字母或数字

思路:
定义变量findLength作为目前查找到的连续字母或数字位数,在循环里,只要字符不是数字或字母就会重置这个变量,以此实现查找连续的数字或字母,当findLength等于10时,当前的i必为我需要的连续字符串的最后一位,只需向前倒推10位即可获得所需字符串的首位的前一位,然后再通过一个循环构造结果字符串即可。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。