文档章节

Scala 解析 URL

兔之
 兔之
发布于 2017/03/30 12:51
字数 167
阅读 363
收藏 0

写一个函数解析公众号文章的 URL,变为一个三元组。用到 base64 解密。

	private def parseUrlToTriTuple(url:String): Option[String] = {
		var id_tuple = url.split("&")
		if (id_tuple.length < 3) {
			return None
		}
		var tupleItemIndexs = Array(-1, -1, -1)
		for (idx <- 0 until id_tuple.length) {
			var pattern_bizuin = "__biz=".r
			var pattern_msgid = "mid=".r
			var pattern_msgidx = "idx=".r
			if (pattern_bizuin.findFirstIn(id_tuple(idx)) != None) {
				tupleItemIndexs(0) = idx
			}
			else if (pattern_msgid.findFirstIn(id_tuple(idx)) != None) {
				tupleItemIndexs(1) = idx
			}
			else if (pattern_msgidx.findFirstIn(id_tuple(idx)) != None) {
				tupleItemIndexs(2) = idx
			}
		}
		
		// 是否包含三元组的名字
		for (item <- tupleItemIndexs) {
			if (item == -1) 
				return None
		}
		
		var uin_pos = id_tuple(tupleItemIndexs(0)).indexOf("__biz=")
		var encode_uin = id_tuple(tupleItemIndexs(0)).substring(uin_pos+6)
		var decode_uin = new String(Base64.decodeBase64(encode_uin))
		
		var mid_pos = id_tuple(tupleItemIndexs(1)).indexOf("=")
		var msg_id = id_tuple(tupleItemIndexs(1)).substring(mid_pos+1)
		
		var idx_pos = id_tuple(tupleItemIndexs(2)).indexOf("=")
		var msg_idx = id_tuple(tupleItemIndexs(2)).substring(idx_pos+1)
		
		return Some(decode_uin + "_" + msg_id + "_" + msg_idx)
	}

© 著作权归作者所有

上一篇: Scala 日期操作
下一篇: Go 中使用 RPC
兔之
粉丝 69
博文 250
码字总数 96477
作品 7
深圳
程序员
私信 提问
jsoup 1.5.1 发布,超棒的HTML解析器

该版本增加单个 pass 选择器用于所有复杂查询,另外使用 CSS 选择器从 DOM 中提取元素的性能得到显著的提升,修复了 Scala 支持的bug,提供新的 HTML 操作特性以及bug修复。 jsoup 是一款 Ja...

红薯
2011/02/19
2.3K
6
scala slick基本使用教程

参考: http://slick.lightbend.com/doc/3.2.1/introduction.html http://www.cnblogs.com/tiger-xc/p/5898585.html http://www.cnblogs.com/tiger-xc/p/5898585.html slick是scala生态中的数......

u012234115
2017/11/28
0
0
play2.0文档-面向java开发者(5)

Body parsers Body解析器 What is a body parser? body解析器是啥? An HTTP request (at least for those using the POST and PUT operations) contains a body. This body can be formatt......

老盖
2012/04/10
470
0
[转] Scala Try 与错误处理

一.概述 当你在尝试一门新的语言时,可能不会过于关注程序出错的问题, 但当真的去创造可用的代码时,就不能再忽视代码中的可能产生的错误和异常了。 鉴于各种各样的原因,人们往往低估了语言...

终日而思一
2018/11/20
7
0
WEB开发框架选择的思考

敝人曾在不同项目中使用JSP-Servlet、SpringMVC,Play2以及JFInal做过WEB开发,对每个框架的易用性和可扩展性都有一定的了解。我也常常会思考这样一个老生常谈的问题:如何选择一个合适的WEB...

hanzhankang
2016/08/06
216
1

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
12
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
9
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部