为什么要做这个词典?

  1. 学了正则表达式要运用
  2. 增加WP开发熟练度

项目中运用了那些技术?

  1. HttpClient
  2. 正则表达式
  3. 数据绑定

详解

通过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简单项目 《在线词典》的更多相关文章

  1. 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。

    基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...

  2. Andriod小项目——在线音乐播放器

    转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...

  3. 终于知道linux firefox不能播放 web在线词典的单词发音了! --通过banshee安装gstreamer1-libav/-plugins-ugly/plugins-bad三个mp3插件.

    mpg123 是一个 命令行的播放器, 他没有gui界面. 直接用 mpg123 test.mp3 就可以直接播放, 而且, 最终要的是, mpg123 自带了mp3的解码器. mpeg: movin ...

  4. 开源项目在线化 中文繁简体转换/敏感词/拼音/分词/汉字相似度/markdown 目录

    前言 以前在 github 上自己开源了一些项目.碍于技术与精力,大部分项目都是 java 实现的. 这对于非 java 开发者而言很不友好,对于不会编程的用户更加不友好. 为了让更多的人可以使用到这 ...

  5. eclipse建立springMVC 简单项目

    http://jinnianshilongnian.iteye.com/blog/1594806 如何通过eclipse建立springMVC的简单项目,现在简单介绍一下. 工具/原料   eclip ...

  6. ubuntu安装goldendict以及添加本地词典和在线词典

    软件在ubuntu软件中心安装就可以了, 关于网络词典, 推荐有道在线词典,网址http://dict.youdao.com/search?q=%GDWORD%&ue=utf8 添加方法:编辑 ...

  7. 【Remoting】.Net remoting方法实现简单的在线升级(上篇:更新文件)

    一.前言:       最近做一个简单的在线升级Demo,使用了微软较早的.Net Remoting技术来练手. 简单的思路就是在服务器配置一个Remoting对象,然后在客户端来执行Remoting ...

  8. Windows 8.1 应用再出发 (WinJS) - 创建一个简单项目

    前面几篇我们介绍了如何利用 C# + XAML 完成Windows Store App 功能的实现,接下来的几篇我们来看看如何利用 Html + WinJS 来完成这些功能. 本篇我们使用WinJS ...

  9. PHP基础示例:简单的在线文件管理

    先截个图: 下面为代码部分,由于只有一个文件,所以就不折叠了. <?php //简单的在线文件管理 $path = "./"; $filelist=array("f ...

随机推荐

  1. Lintcode: Segment Tree Modify

    For a Maximum Segment Tree, which each node has an extra value max to store the maximum value in thi ...

  2. 面向对象 理解 C#复习

    面向对象: 是基于万物皆对象这个哲学观点. 所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面 通俗点讲: 一切都是对象 举例: 将 ...

  3. Eclipse插件CheckStyle的安装和使用

    转载自:http://www.cnblogs.com/lanxuezaipiao/p/3202169.html CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员 ...

  4. C++Builder 解决绘图闪动问题

    使用双缓冲 Form->DoubleBuffered = true; Panel->DoubleBuffered = true;

  5. zoj The 12th Zhejiang Provincial Collegiate Programming Contest Demacia of the Ancients

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5504  The 12th Zhejiang Provincial ...

  6. Java基础(30):String对象的常用方法与实例(String类)

    Java 中 String 类的常用方法 Ⅰ String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等,下面我们就来领略它的强大之 ...

  7. HDU 1728 逃离迷宫(BFS)

    Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有 ...

  8. CCF真题之字符串匹配

    201409-3 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符:当选项关闭时,表示同一 ...

  9. linux env

    .Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.1 永久的:需要修改配置文件,变量永久生效. 1.2 临时的:使用export命令声明即可,变量在关闭shell时失效. ...

  10. centos的用户管理相关命令所在的包

    用户管理命令是指:useradd userdel  groupadd groupdel 这些 这些命令出自一个叫 shadow-utils 的包. 对于配置文件 /etc/shadow ,则来自一个叫 ...