WP8.1简单项目 《在线词典》
为什么要做这个词典?
- 学了正则表达式要运用
- 增加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.
WP8.1简单项目 《在线词典》的更多相关文章
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...
- Andriod小项目——在线音乐播放器
转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...
- 终于知道linux firefox不能播放 web在线词典的单词发音了! --通过banshee安装gstreamer1-libav/-plugins-ugly/plugins-bad三个mp3插件.
mpg123 是一个 命令行的播放器, 他没有gui界面. 直接用 mpg123 test.mp3 就可以直接播放, 而且, 最终要的是, mpg123 自带了mp3的解码器. mpeg: movin ...
- 开源项目在线化 中文繁简体转换/敏感词/拼音/分词/汉字相似度/markdown 目录
前言 以前在 github 上自己开源了一些项目.碍于技术与精力,大部分项目都是 java 实现的. 这对于非 java 开发者而言很不友好,对于不会编程的用户更加不友好. 为了让更多的人可以使用到这 ...
- eclipse建立springMVC 简单项目
http://jinnianshilongnian.iteye.com/blog/1594806 如何通过eclipse建立springMVC的简单项目,现在简单介绍一下. 工具/原料 eclip ...
- ubuntu安装goldendict以及添加本地词典和在线词典
软件在ubuntu软件中心安装就可以了, 关于网络词典, 推荐有道在线词典,网址http://dict.youdao.com/search?q=%GDWORD%&ue=utf8 添加方法:编辑 ...
- 【Remoting】.Net remoting方法实现简单的在线升级(上篇:更新文件)
一.前言: 最近做一个简单的在线升级Demo,使用了微软较早的.Net Remoting技术来练手. 简单的思路就是在服务器配置一个Remoting对象,然后在客户端来执行Remoting ...
- Windows 8.1 应用再出发 (WinJS) - 创建一个简单项目
前面几篇我们介绍了如何利用 C# + XAML 完成Windows Store App 功能的实现,接下来的几篇我们来看看如何利用 Html + WinJS 来完成这些功能. 本篇我们使用WinJS ...
- PHP基础示例:简单的在线文件管理
先截个图: 下面为代码部分,由于只有一个文件,所以就不折叠了. <?php //简单的在线文件管理 $path = "./"; $filelist=array("f ...
随机推荐
- js方法和prototype
JS中的方法可以分为三类 1.对象方法 2.类方法 3.原型方法 例: function People(name) { this.name=name; //对象方法 this.Introduce=fu ...
- codevs 1203 判断浮点数是否相等
http://codevs.cn/problem/1203/ 1203 判断浮点数是否相等 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题解 查看运行 ...
- Python学习总结13:os模块
os模块包含普遍的操作系统功能,与具体的平台无关.常用于处理文件和目录这些我们日常手动需要做的操作. 1. os模块函数汇总 1) os.name():判断现在正在实用的平台,Windows 返回 ‘ ...
- Java之Structs框架初探
今天是小白第一次自己的接触Struts框架,因为网上的资料都是从Structs2开始,跟Structs1完全不同,因此,小白直接跳过1学习版本2的搭建,废话不多说,直接开始. 首先要搭建框架,就肯定要 ...
- HDU 4898 The Revenge of the Princess’ Knight(后缀数组+二分+暴力)(2014 Multi-University Training Contest 4)
Problem Description There is an old country and the king fell in love with a devil. The devil always ...
- 自定义Scrollview--实现仿淘宝Toolbar透明度渐变效果
,上个月做了下电商的项目,本来以为本简单的,但做起来还是遇到了不少的问题,上个周五项目就上线了,不过时间还是很紧,PM给了我两天时间总结总结,然后又要开始一个新的项目和这个项目的迭代,感觉又要开始累死 ...
- 夺命雷公狗---node.js---21之项目的构建在node+express+mongo的博客项目6之数据的遍历
首先还是来链接数据库,然后就查找,如下所示: /** * Created by leigood on 2016/8/31. */ var express = require('express'); v ...
- 夺命雷公狗ThinkPHP项目之----企业网站17之网站配置页的添加
为了网站可以智能一点,所以我们开始来写一个网站配置的功能.. 所以我来写他的数据表: 先来完成他的添加功能,页面效果如下所示: lists.html代码如下所示: <!doctype html& ...
- 夺命雷公狗ThinkPHP项目之----企业网站16之文章列表页的完善(关联查询)
我们栏目的所属栏目不能总是以数字来显示吧??这样的话,估计老板会让您直接卷铺盖滚蛋噢,嘻嘻... 所以我们需要对她进行关联查询,控制器代码如下所示: public function lists(){ ...
- 夺命雷公狗---DEDECMS----13dedecms首页的完成
我们的dedecms搭建起来后直接复制templets的目录复制一份,如下所示: 然后进入templets目录里面,然后再将default里面的东西都给干掉,然后将我们预先准备好的首页放进来,代码如下 ...