WP8.1简单项目 《在线词典》
2016-05-12 17:32
344 查看
为什么要做这个词典?
学了正则表达式要运用增加WP开发熟练度
项目中运用了那些技术?
HttpClient正则表达式
数据绑定
详解
通过http://cn.bing.com/dict/search?q=可以向必应词典发送查询单词请求,可以得到一个如下的页面具体代码如下:
string uri = "http://cn.bing.com/dict/search?q=" + word; HttpClient hc = new HttpClient(); string htmlFile = await hc.GetStringAsync(uri);
这样,页面的源代码就储存在
htmlFile里面了,接下来让我们来解析这份文件,我们要用到的是正则表达式,不了解的同学可以到这里去花30分钟简单的学一下.
首先,我们需要确定哪些文本是我们需要的,显而易见,我们需要橙色框中的部分。
然而,捕获这段文本并不方便,通过观察页面源代码,我发现了如下的内容
高亮出来的部分不正是我们需要的解释吗?而且捕获它们也非常的方便,只需要如下的代码。
Regex re = new Regex(@"(?<=],)[a-zA-Z网].*?(?=""/>)", RegexOptions.IgnoreCase); Match m = re.Match(htmlFile);
其中,我们用到的正则表达式为
(?<=],)[a-zA-Z网].*?(?="/>)
为了得出这个表达式,我用到了这个测试工具,而且这个工具还可以一键生成C#语句,相当方便。
这样,我们就得到了这样的初步结果
n. 密集的人(或东西);方阵; 网络释义: 密集阵;趾骨;指骨;
再通过这个表达式可以把这个解释按词性断开
[a-zA-Z网].*?(?=;\s)
需要给上面的初步结果尾部加一个空格
为了向用户展示结果,我用了数据绑定(对于初学者,怎么能把自己学过的东西都用上就怎么搞)。
首先,创建一个
MyDic类,让它继承于
INotifyPropertyChanged接口,并实现这个接口。添加一个用来接收事件的函数
private void RaisePropertyChanged(string bindingpath) { if (PropertyChanged!=null) { PropertyChanged(this, new PropertyChangedEventArgs(bindingpath)); } }
在
MyDic对象的一个属性的值发生变动的时候,会发布一个
PropertyChanged事件,所以我们需要在对应的属性的
set语句后调用这个函数。这样,它就能在属性发生改变的时候通知UI中展示结果的控件:该刷新了~
The End.
相关文章推荐
- dmalloc用法快速入门
- js事件行为
- IntelliJ IDEA启动web项目时突然变慢的原因
- zkfc报错:java.net.NoRouteToHostException: No route to host
- nginx学习笔记之一:nginx介绍及其编译安装
- 酷炫的下载的进度动画2
- java中的常见异常及错误和处理方法
- python中lock和rlock(递归锁)的区别
- codeforces590C 二维最短路+BFS+优先级队列
- JAVA字符串格式化-String.format()的使用
- json-lib 输出父子级联对象
- CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
- 软件破解
- Windows 8.1 with update 官方最新镜像汇总
- 选择排序法——1到100
- testng实现参数化以及@optional的使用
- 冒泡排序法
- jquery tmpl $被jsp jstl占用
- java的继承关系中对象的加载和初始化顺序
- 途牛原创|无线中心运营研发Redis酷实践