WP8.1简单项目 《在线词典》

时间:2022-08-28 20:57:18

为什么要做这个词典?

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

项目中运用了那些技术?

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

详解

通过http://cn.bing.com/dict/search?q=可以向必应词典发送查询单词请求,可以得到一个如下的页面

WP8.1简单项目 《在线词典》

具体代码如下:

string uri = "http://cn.bing.com/dict/search?q=" + word;
HttpClient hc = new HttpClient();
string htmlFile = await hc.GetStringAsync(uri);

这样,页面的源代码就储存在htmlFile里面了,接下来让我们来解析这份文件,我们要用到的是正则表达式,不了解的同学可以到这里去花30分钟简单的学一下.

首先,我们需要确定哪些文本是我们需要的,显而易见,我们需要橙色框中的部分。

WP8.1简单项目 《在线词典》

然而,捕获这段文本并不方便,通过观察页面源代码,我发现了如下的内容WP8.1简单项目 《在线词典》

高亮出来的部分不正是我们需要的解释吗?而且捕获它们也非常的方便,只需要如下的代码。

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&period;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在线词典的单词发音了&excl; --通过banshee安装gstreamer1-libav&sol;-plugins-ugly&sol;plugins-bad三个mp3插件&period;

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

  4. eclipse建立springMVC 简单项目

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

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

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

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

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

  7. Windows 8&period;1 应用再出发 &lpar;WinJS&rpar; - 创建一个简单项目

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

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

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

  9. 在线词典php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. python字符串的使用

    之前在网上看了关于python最基础的一些教程,看着都通俗易懂,但是在写的过程中却感觉还是很生涩.关于字符串的使用还是应该多写多练!如何将“teacher_id = 123 #老师ID”转换成字典或者 ...

  2. 吴奇隆刘诗诗婚礼场地:巴厘岛Ayana酒店,美到窒息!

    导读:忍不住转载一下,原文地址:http://www.sjq315.com/news/270768.html 3月20日,吴奇隆和刘诗诗在巴厘岛五星级酒店Ayana Resort and Spa酒店举 ...

  3. sC&num;进阶系列——WebApi 接口参数不再困惑:传参详解

    原文:http://www.cnblogs.com/landeanfen/p/5337072.html 一.get请求 对于取数据,我们使用最多的应该就是get请求了吧.下面通过几个示例看看我们的ge ...

  4. Frament 方法

    public final boolean isAdded() 如果该Fragment对象被添加到了它的Activity中,那么它返回true,否则返回false. public final boole ...

  5. SQL&nbsp&semi;Server&nbsp&semi;2008&nbsp&semi;R2&nbsp&semi;跟踪标志

    原文:SQL Server 2008 R2 跟踪标志 跟踪标志用于临时设置特定服务器的特征或关闭特定行为.例如,如果启动 SQL Server 的一个实例时设置了跟踪标志 3205,将禁用磁带机的硬件 ...

  6. 熬之滴水成石:Spring--精简的J2EE&lpar;7&rpar;

                                              49--持久性 关于持久性在最早的Delphi单元中,就曾介绍过.持久性是数据库中读取,保存,或删除数据的过程.毫无 ...

  7. java学习笔记 --- 多态

    一.多态 (1)定义:同一个对象在不同时刻体现出来的不同状态.父类的引用或者接口的引用指向了自己的子类对象.   Dog d = new Dog();//Dog对象的类型是Dog类型.  Animal ...

  8. Nginx服务及编译安装

    第1章 Nginx 1.1 nginx的概念 Nginx("engine x")是一个开源的.支持高性能.高并发的WWW服务和代理服务软件,具有高开发(特别是静态资源),占用系统资 ...

  9. Homework:小写字母转大写字母

    // 功能: // 从键盘上输入单个字符 // 如果是小写字母,则转换成大写后输出 // 否则,什么也不做,原样输出 #include <stdio.h> int main() { cha ...

  10. Jackson xml json

    public class XMLTest { private static XmlMapper xmlMapper = new XmlMapper(); private static ObjectMa ...