<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>23号球衣</title>
    <description></description>
    <link>http://desert.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>javascript 变量与条件判断</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/227972" style="color:red;">http://desert.javaeye.com/blog/227972</a>&nbsp;
          发表时间: 2008年08月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>function fun(a){</p>
<p>&nbsp;&nbsp;&nbsp; if(!a) alert(&quot;not &quot; + a);</p>
<p>}</p>
<p>fun();&nbsp;&nbsp;  //not undefined</p>
<p>fun(0); &nbsp;&nbsp;  //not 0</p>
<p>fun(&quot;&quot;);&nbsp;&nbsp;  //not</p>
<p>fun(false);&nbsp;&nbsp;  //not false</p>
<p>fun(null); &nbsp;&nbsp;  //not null</p>
<p>fun(undefined);&nbsp;&nbsp;  //not undefined(undefined是关键字)</p>
<p>&nbsp;</p>
<p>arr = [1, 2, 3]</p>
<p>obj = ['attr1': 1, 'attr2':2]</p>
<p>if(1 in arr){}</p>
<p>if(&quot;attr1&quot; in obj){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; or&nbsp;&nbsp;&nbsp; if(obj['attr1']){}</p>
<p>&nbsp;</p>
<p>if(a = obj['key']){</p>
<p>//do something with a</p>
<p>}</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/227972#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 14 Aug 2008 12:29:37 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/227972</link>
        <guid>http://desert.javaeye.com/blog/227972</guid>
      </item>
      <item>
        <title>virtualbox安装配置</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/225226" style="color:red;">http://desert.javaeye.com/blog/225226</a>&nbsp;
          发表时间: 2008年08月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>$sudo apt-get install virtualbox<br />
$sudo gpasswd -a `whoami` vboxusers<br />
$sudo apt-get install scim-bridge-client-qt&nbsp;&nbsp;&nbsp; #防止输入法冲突<br />
<br />
&bull; 声音：声卡类型PulseAudio | ALSA Audio Driver<br />
<br />
&bull; USB设备： <br />
1.<br />
/etc/fstab 后增加<br />
none /proc/bus/usb usbfs devgid=125,devmode=664 0 0&nbsp;&nbsp;&nbsp; #devgid是用户的group id<br />
2.<br />
修改/etc/init.d/mountdevsubfs.sh, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Magic to make /proc/bus/usb work<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mkdir -p /dev/bus/usb/.usbfs<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; domount usbfs &quot;&quot; /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ln -s .usbfs/devices /dev/bus/usb/devices<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mount --rbind /dev/bus/usb /proc/bus/usb</p>
<p><br />
确保vboxusers组用户有写权限：<br />
/etc/udev/rules.d/40-base-permissions.rules<br />
# USB devices (usbfs replacement)<br />
SUBSYSTEM==&quot;usb&quot;, ENV{DEVTYPE}==&quot;usb_device&quot;, MODE=&quot;0664&quot;, GROUP=&quot;vboxusers&quot;<br />
SUBSYSTEM==&quot;usb_device&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MODE=&quot;0664&quot;, GROUP=&quot;vboxusers&quot;<br />
<br />
&bull; 主客机共享文件夹：<br />
最好安装增强功能</p>
<p><br />
#on host(ubuntu), xp为虚拟机名称，这个也可以在启动后：设备－》分配数据空间设定<br />
$vboxmanage sharedfolder add &quot;xp&quot; -name &quot;share&quot; -hostpath ~/pub/</p>
<p><br />
#on guest(windows)<br />
net use x: \\vboxsvr\share</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/225226#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 06 Aug 2008 23:53:08 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/225226</link>
        <guid>http://desert.javaeye.com/blog/225226</guid>
      </item>
      <item>
        <title>常见问题和解决方法</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/220231" style="color:red;">http://desert.javaeye.com/blog/220231</a>&nbsp;
          发表时间: 2008年07月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ul>
<li>mp3乱码</li>
</ul>
<p>#sudo apt-get install <span class="postbody">python-mutagen</span>
</p>
<p>#find . -iname &quot;*.mp3&quot; -exec mid3iconv -e GBK {} \;</p>
<p>&nbsp;</p>
<ul>
<li>在ubuntu中运行windows</li>
</ul>
<p>先安装Ubuntu, 再安装virtualbox(#sudo apt-get install virtualbox),</p>
<p>建立虚拟机，CD Rom选择window.iso。启动即可安装windows</p>
<ul>
<li>Multiget安装并同firefox整合（64位)</li>
</ul>
<p>下载并安装：http://www.getdeb.net/<br />
同firefox的flashgot整合：［url=URL］［refer=REFERER］</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/220231#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 27 Jul 2008 22:47:51 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/220231</link>
        <guid>http://desert.javaeye.com/blog/220231</guid>
      </item>
      <item>
        <title>文本处理(grep, vim)</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/220069" style="color:red;">http://desert.javaeye.com/blog/220069</a>&nbsp;
          发表时间: 2008年07月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="color: #ff0000;"><strong><span style="font-size: medium;">grep</span>
</strong>
</span>
<br />
参考: http://www.panix.com/~elflord/unix/grep.html<br />
regexp in grep: \ 添加或删除special meaning<br />
hello.gif&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #match hello.gif, helloxgif<br />
hello\.gif&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #only match hello.gif&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \ has escape special meaning of .<br />
bugg\?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #match bug, bugg&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; \ add special meaning on ?<br />
Fred\(eric\)&nbsp;&nbsp;&nbsp; #group eric&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ add special<br />
[Hh]ello&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; #pre-define character class: [[:alpha:]]=[a-zA-Z]<br />
&quot;[[:digit:]]\{4\}&quot;&nbsp;&nbsp;&nbsp; #match 1234<br />
&quot;^hello$&quot;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #begin with h &amp; end with $<br />
&quot;this\|that&quot;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #this or that<br />
&quot;&lt;\(h[1-6]\)&gt;[^&lt;]*&lt;/\1&gt;&quot;&nbsp;&nbsp;&nbsp; #&lt;h1&gt;xx&lt;/h1&gt;or &lt;h2&gt;xxx&lt;/h2&gt; but never &lt;h1&gt;xx&lt;/h2&gt;. using back reference \N(N is a number)<br />
&quot;$HOME&quot; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #actually /home/me<br />
'$HOME'&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; #no special meaning<br />
<br />
grep &amp; egrep<br />
grep&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; egrep<br />
a\+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a+<br />
a\?&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; a?<br />
this\|that&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this|that<br />
\(group\)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (group)<br />
\{m,n\}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {m,n}</p>
<p>&nbsp;</p>
<p><span style="color: #ff0000; font-size: medium;">vim使用</span>
</p>
<p>tab设定：</p>
<p>set tabstop=4<br />
set softtabstop=4<br />
set shiftwidth=4</p>
<p>&nbsp;</p>
<p>other setting:</p>
<p>set number | set nonumber&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #set line number</p>
<p>&nbsp;</p>
<p>常用命令：http://www.tuxfiles.org/linuxhelp/vimcheat.html</p>
<p>&nbsp;</p>
<p>整理自vimtutor</p>
<p>ctr-O &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; #go back<br />
ctr-I&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #go forward<br />
<br />
:s/regex/replace/gic&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #substitute on current line. g - replace all. i - ignore case. c - confirm<br />
:1,10s/regex/replace/&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; #substitute from line 1~10<br />
:%s/regex/replace/&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; #substitute whole file<br />
<br />
:!pwd&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; #execute external command</p>
<p><br />
:w FILENAME&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; #write the file to FILENAME<br />
<br />
:r FILE&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; #append FILE content at cursor<br />
:r !ls&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #execute command and append output at cursor<br />
<br />
% &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #find match ) ] }<br />
10G &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; #go to line 10<br />

R&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; #replace mode<br />
yw&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; #copy a word<br />
y$&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #copy until line<br />
v&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; #visual mode<br />
v-&gt;select-&gt;:w PART&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #save part that is selected<br />
<br />
:set xxx&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #set some function<br />
:set ic&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; #ignore case when search<br />
:set noic&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
/regex\c&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #ignore case for this time<br />
<br />
:set hls&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; #highlight search<br />
:set nohls<br />
<br />
ctrl+w -&gt; j|k&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #jump up or down to another window<br />
<br />
:help or F1&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #get help<br />
:help w<br />
:help user-manual<br />
<br />
<span style="background-color: #00ccff;">word completion using ctrl+D &amp; TAB</span>
<br />
:set nocp&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #make sure vim is not in compatible<br />
:!l(press ctrl+D or TAB)<br />
:ed(press ctrl+D or TAB)<br />
:help .(press ctrl+D)</p>
<p>&nbsp;</p>
<p style="background-color: #ffffff;"><span style="color: #0000ff; font-size: medium;">vim as python editor</span>
</p>
<p style="background-color: #ffffff;">&nbsp;</p>
<p style="background-color: #ffffff;"><span style="background-color: #ff9900;">add auto complete in vim for python </span></p>
<ul>
<li>&nbsp;download python completion vim script :Python Omni Completion</li>
</ul>
<ul>
<li>&nbsp;put in ~/.vim/autoload or /usr/share/vim/addons/autoload</li>
</ul>
<ul>
<li>&nbsp;add following 2 line to .vimrc </li>
</ul>
<p style="background-color: #ffffff;">au Syntax python set omnifunc=pythoncomplete#Complete<br />
au Syntax python set completefunc=pythoncomplete#Complete</p>
<ul>
<li>&nbsp;use ctrl+x, ctrl+o when writing python program</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/220069#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 27 Jul 2008 11:36:02 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/220069</link>
        <guid>http://desert.javaeye.com/blog/220069</guid>
      </item>
      <item>
        <title>ubuntu 常用命令</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/219797" style="color:red;">http://desert.javaeye.com/blog/219797</a>&nbsp;
          发表时间: 2008年07月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>--------------------------------文件系统------------------------------------<br />
pwd<br />
cd</p>
<p>cp -r /some/dir /target/dir&nbsp;&nbsp;&nbsp;&nbsp; #将/some/dir目录下的所有文件拷贝到/target/dir<br />
mv&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#重命名或移动<br />
rm file<br />
rm -R dir<br />
ls [dir | file]&nbsp;&nbsp; &nbsp;#对于目录列出目录中的内容，缺省列出当前目录内容。<br />
ls -d dir&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#对于目录只列出目录本身<br />
ls -S -r&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#-S 大小排序，其他排序方式详看ls --help, -r reverse反序<br />
mkdir -p /home/eagle/d1/d2<br />
chmod -R [ugoa][+-][rwx] dir|file&nbsp;&nbsp; &nbsp;#-R 递归设定目录中的文件。 chmod ug+rw file<br />
chmod 755 dir|file&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#8进制设定<br />
chown owner:group dir|file</p>
<p>&nbsp;</p>
<p>find [dir] -name &quot;*.mp3&quot; -exec ls -l --color=auto {} \;</p>
<p><br />
tar -zcvf backup.tar.gz dir file.....&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #创建压缩包<br />
tar -ztf backup.tar.gz&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #查看包内容<br />
tar -zxvf backup.tar.gz -C /to/dir&nbsp;&nbsp;&nbsp; #解压</p>
<p>&nbsp;</p>
<p><br />
--------------------------------系统命令------------------------------------<br />
df -h&nbsp;&nbsp; &nbsp;#查看磁盘使用<br />
free -m&nbsp;&nbsp; &nbsp;#查看内存使用，-m 为MB<br />
top&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#进程查看，进入后h可查看帮助<br />
uname -a&nbsp;&nbsp; &nbsp;#系统信息<br />
lsb_release -a&nbsp;&nbsp; &nbsp;#正在使用Linux 发行版本信息<br />
lspci<br />
lsusb<br />
ps&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#进程信息。常用参数aux<br />
<br />
mount -t vfat /dev/sdb /medit/U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #挂载</p>
<p><br />
-------------------软件管理--------------------------<br />
dpkg -l&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#列出所有已经安装的包<br />
dpkg -i some.deb&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#安装some.deb<br />
dpkg -L cron&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#列出cron包有哪些文件<br />
dpkg -S /etc/crontab&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#crontab文件属于哪个包<br />
<br />
apt-get remove zip&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#删除zip包，配置文件还在<br />
apt-get --purge remove zip&nbsp;&nbsp; &nbsp;#连配置文件也删除<br />
<br />
apt-cache search &quot;some text&quot;&nbsp;&nbsp; &nbsp;#some text可以是包名，或者描述<br />
apt-cache show zip&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#zip安装包描述<br />
apt-cache policy zip&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#zip包安装情况<br />
<br />
-----------------------------------------------------<br />
man -k &quot;list directory contents&quot;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#列出Description 包含有list directory contents的命令<br />
man ls<br />
<br />
-------------------------文本----------------------------<br />
grep PATTERN FILE<br />
grep [ -e PATTERN | -f PATTERN_FILE ] [FILE.....]&nbsp;&nbsp; &nbsp;#从PATTERN_FILE中读取pattern</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/219797#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 26 Jul 2008 13:40:16 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/219797</link>
        <guid>http://desert.javaeye.com/blog/219797</guid>
      </item>
      <item>
        <title>java IO</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/214555" style="color:red;">http://desert.javaeye.com/blog/214555</a>&nbsp;
          发表时间: 2008年07月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>InputSteam &amp; OutputSteam</strong>
</p>
<ul>
<li><strong><span style="color: #3366ff;">InputStream</span>
</strong>
(InputStreamReader)</li>
</ul>
<p><strong>BufferedInputStream</strong>
: used as other input stream's wrapper.<br />
<strong>ByteArrayInputStream</strong>
: new ByteArrayInputStream(byteContent), A ByteArrayInputStream contains an internal buffer that contains bytes that may be read from the stream.<br />
<strong>FileInputStream</strong>
: new FileInputStream(path); read file<br />
<br />
//seldom use<br />
<strong>DataInputStream</strong>
<br />
<strong>ObjectInputStream</strong>
: Read object from stream.<br />
<strong>PipedInputStream</strong>
:<br />
<strong>PushbackInputStream</strong>
<br />
<strong>SequenceInputStream</strong>
:</p>
<ul>
<li><span style="color: #3366ff;"><strong>OutputStream</strong>
</span>
(OutputStreamWriter)</li>
</ul>
<p>
<strong>BufferedOutputStream</strong>
<br />
<strong>ByteArrayOutputStream</strong>
<br />
<strong>FileOutputStream</strong>
<br />
<strong>PrintStream</strong>
: System.out<br />
//seldom use<br />
<strong>DataOutputStream</strong>
<br />
<strong>ObjectOutputStream</strong>
<br />
<strong>PipedOutputStream</strong>
<br />
<br />
<span style="background-color: #ff0000;">通常用法</span>
<br />
<br />
InputStream bin = null;<br />
OutputStream bout = null;<br />
byte[] buffer = new byte[1024];&nbsp; //<br />
int length;<br />
<br />
try {<br />
&nbsp;&nbsp;&nbsp; bin = SomeInputStream();<br />
&nbsp;&nbsp;&nbsp; bout = SomeOutputStream();<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; while((length = bin.read(buffer)) != -1) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; bout.write(buffer, 0, length);<br />
&nbsp;&nbsp;&nbsp; }<br />
} catch (FileNotFoundException e) {<br />
&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
} catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
} finally {<br />
&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; bin.close();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; bout.close();<br />
&nbsp;&nbsp;&nbsp; } catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p><strong>Reader &amp; Writer</strong>
</p>
<ul>
<li><span style="color: #3366ff;"><strong>Reader</strong>
</span>
</li>
</ul>
<p><strong>BufferedReader</strong>
<br />
<strong>CharArrayReader</strong>
<br />
<strong>FileReader</strong>
<br />
<strong>StringReader</strong>
</p>
<p>&nbsp;</p>
<p>//较少使用<br />
<strong>PipedReader</strong>
<br />
<strong>PushbackReader</strong>
</p>
<ul>
<li><span style="color: #3366ff;"><strong>Writer</strong>
</span>
</li>
</ul>
<p><strong>BufferedWriter</strong>
<br />
<strong>CharArrayWriter</strong>
<br />
<strong>FileWriter</strong>
<br />
<strong>PrintWriter</strong>
<br />
<strong>StringWriter</strong>
</p>
<p>&nbsp;</p>
<p>//少用<br />
<strong>PipedWriter</strong>
</p>
<p>&nbsp;</p>
<p><span style="color: #3366ff;">一些说明：</span>
</p>
<p>PrintWriter &amp; PrintStream 最大特点就是它们提供了格式化的功能。pw.format(&quot;%s world&quot;, &quot;hello&quot;);</p>
<p>&nbsp;</p>
<p>Commons IO</p>
<p><strong>IOUtils</strong>
</p>
<p>
 This class provides static utility methods for input/output operations.
 </p>
<ul>
<li>closeQuietly - these methods close a stream ignoring nulls and exceptions
 </li>
<li>toXxx/read - these methods read data from a stream
 </li>
<li>write - these methods write data to a stream
 </li>
<li>copy - these methods copy all the data from one stream to another
 </li>
<li>contentEquals - these methods compare the content of two streams
 </li>
</ul>
<p><strong>FileUtils</strong>
</p>
<p>&nbsp;</p>
<ul>
<li>writing to a file
 </li>
<li>reading from a file
 </li>
<li>make a directory including parent directories
 </li>
<li>copying files and directories
 </li>
<li>deleting files and directories
 </li>
<li>converting to and from a URL
 </li>
<li>listing files and directories by filter and extension
 </li>
<li>comparing file content
 </li>
<li>file last changed date
 </li>
<li>calculating a checksum
 </li>
</ul>
<p><strong>FilenameUtils</strong>
</p>
<ul>
<li>the prefix - C:\</li>
<li>the path - dev\project\</li>
<li>the full path - C:\dev\project\</li>
<li>the name - file.txt</li>
<li>the base name - file</li>
<li>the extension - txt</li>
</ul>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/214555#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 14 Jul 2008 13:51:22 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/214555</link>
        <guid>http://desert.javaeye.com/blog/214555</guid>
      </item>
      <item>
        <title>FacesContext &amp; ServletContext</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/207748" style="color:red;">http://desert.javaeye.com/blog/207748</a>&nbsp;
          发表时间: 2008年06月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><!--  [if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:UseFELayout/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--  [if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
 </w:LatentStyles>
</xml><![endif]--><!--  [if !mso]>
<span class="mceItemObject" 
 classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui>
</span>
<style>
st1\:*{behavior:url(#ieooui) }
</style>
<![endif]-->
<!--  [if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
</style>
<![endif]-->
</p>
<p class="MsoNormal">FacesContext fc = FacesContext.getCurrentInstance();</p>
<p class="MsoNormal">ExternalContext ec = fc.getExternalContext();</p>
<p class="MsoNormal">HttpServletRequest servletRequest =
(HttpServletRequest)ec.getRequest();</p>
<p class="MsoNormal">HttpServletResponse servletResponse = (HttpServletResponse)ec.getResponse();</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><span style="font-family: 宋体;">取得</span>
parameter<span style="font-family: 宋体;">的办法</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">1)</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">String key =
httpRequest.getParameter(</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&quot;key&quot;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span>

</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">String value = httpRequest.getParameter(</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&quot;value&quot;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">2)</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Map request = ex.getRequestParameterMap();</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">String key = request.get(&ldquo;key&rdquo;);</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">ExternalContext </span>
<span style="font-size: 10pt; font-family: 宋体; color: black;">一些方法</span>

</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">getRequestContextPath();<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&ldquo;/cmp&rdquo;</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">getRequestServletPath();<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&ldquo;/ajax&rdquo;</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">getRequestPathInfo();<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&ldquo;/invoke/iStoreBean.changeBasic&rdquo;</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">ServletContext servletContext = ec.getContext();</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">servletContext.getRealPath(&ldquo;/&rdquo;);<span>&nbsp; </span>
file
system path</span>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span>
</p>
<p class="MsoNormal">&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/207748#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 25 Jun 2008 10:15:19 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/207748</link>
        <guid>http://desert.javaeye.com/blog/207748</guid>
      </item>
      <item>
        <title>Class简单使用</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/207338" style="color:red;">http://desert.javaeye.com/blog/207338</a>&nbsp;
          发表时间: 2008年06月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="background-color: #ff0000;">//how to get class</span>
</p>
<ul>
<li><br />
</li>
</ul>
<p>Class clazz = String.class;<br />
clazz = int.class;</p>
<ul>
<li><br />
</li>
</ul>
<p>String s = &quot;abc&quot;;<br />
clazz = s.getClass();</p>
<ul>
<li></li>
</ul>
<p>clazz = Class.forName(&quot;java.util.ArrayList&quot;);<br />
<br />
<span style="background-color: #ff0000;">//create instance using default constructor</span>
<br />
List list = (List) clazz.newInstance();<br />
<br />
<span style="background-color: #ff0000;">//isXXX</span>
<br />
clazz.isArray();<br />
<br />
<span style="background-color: #ff0000;">//package</span>
<br />
Package pkg = clazz.getPackage();<br />
<br />
//Note: getField() &amp; getDeclaredField()<br />
<span style="background-color: #ff0000;">//fields</span>
<br />
Field field1 = clazz.getField(&quot;fieldName&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br />
//get value: <br />
field1.getXXX(obj);<br />
//set value: <br />
field1.setXXX(obj, value);<br />
<br />
Field[] fields = clazz.getFields();<br />
<br />
<span style="background-color: #ff0000;">//constructor</span>
<br />
Constructor con = clazz.getConstructor(String.class, int.class);<br />
//invokd: <br />
con.newInstance(Object...initargs)<br />
Constructor[] cons = clazz.getConstructors();<br />
<br />
<br />
<span style="background-color: #ff0000;">//method</span>
<br />
Method method = clazz.getMethod(&quot;methodName&quot;, String.class, int.class);<br />
//invoke method<br />
method.invoke(obj, Object...args)<br />
Method[] ms = clazz.getMethods();<br /></p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/207338#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 Jun 2008 10:07:07 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/207338</link>
        <guid>http://desert.javaeye.com/blog/207338</guid>
      </item>
      <item>
        <title>regexp 简单运用</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/207018" style="color:red;">http://desert.javaeye.com/blog/207018</a>&nbsp;
          发表时间: 2008年06月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //split<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;String s = &quot;hello world i am 23 years&quot;;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;String[] ss = s.split(&quot;\\s&quot;);<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//replace<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;s.replaceAll(&quot;\\s&quot;, &quot;#&quot;);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;s.replaceFirst(&quot;\\d&quot;, &quot;#&quot;);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//greedy(default) &amp; reluctant<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;String greedy = &quot;\\d*&quot;;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;String lazy = &quot;\\d*?&quot;; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //Pattern &amp; Matcher<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String phone = &quot;my phone: 13352135478. Hers is 15984563215. call us later.&quot;;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Pattern p = Pattern.compile(&quot;\\d{11}&quot;);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Matcher m = p.matcher(phone);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while(m.find()) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.printf(&quot;find: %s, start: %d, end: %d\n&quot;, m.group(), m.start(), m.end());<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //把整个input和regexp匹配, 类似Pattern.matches(regex, input);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; boolean wholeMatch = Pattern.matches(&quot;\\d{4}-\\d{7}&quot;, &quot;0592-6103687&quot;);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //groups<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String tel = &quot;my tel is 0592-6103625. call me at 12:00&quot;;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Pattern p2 = Pattern.compile(&quot;(\\d{4})-(\\d{7})&quot;);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Matcher m2 = p2.matcher(tel);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while(m2.find()) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; int count = m2.groupCount();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(int i=0; i&lt;=count; i++) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.printf(&quot;group: %s. start: %d, end: %d\n&quot;, m2.group(i), m2.start(i), m2.end(i));<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //静态方法<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Pattern.matches(&quot;\\d{4}&quot;, &quot;1125f&quot;);&nbsp;&nbsp;&nbsp;&nbsp; //false</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Pattern.matches(&quot;\\d{4}&quot;, &quot;1125&quot;);&nbsp;&nbsp;&nbsp;&nbsp; //true</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //scanner<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Scanner scanner = new Scanner(&quot;xushaoxun@gmail.com mail me if you have time&quot;);</p>
<p>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println(scanner.next(&quot;(\\w+)@(\\w+)\\.(\\w{3})&quot;));</p>
<p><!--  [if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:UseFELayout/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--  [if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
 </w:LatentStyles>
</xml><![endif]-->
<!--  [if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
</style>
<![endif]-->
</p>
<p class="MsoNormal" align="left" style="text-align: left;">&nbsp;</p>
<p class="MsoNormal" style="text-align: center;"><strong><span style="font-size: 16pt;">Regular Expression</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span style="font-size: 12pt;">Character Classes</span>
</strong>
</p>
<table class="MsoNormalTable" border="1" cellpadding="0">
<tbody>
<tr>
<td colspan="2" style="padding: 0.75pt;">
<p class="MsoNormal" align="center" style="text-align: center;"><a name="CHART"></a>
<strong><span style="font-size: 12pt;">Character
  Classes</span>
</strong>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[abc]</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">a, b, or c (<strong>simple class</strong>
) </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[^abc]</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">Any character except a, b, or c
  (<strong>negation</strong>
) </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[a-zA-Z] </span>

</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">a through z, or A through Z,
  inclusive (<strong>range</strong>
) </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[a-d[m-p]] </span>

</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">a through d, or m through p:
  [a-dm-p] (<strong>union</strong>
) </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[a-z&amp;&amp;[def]]</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">d, e, or f (<strong>intersection</strong>
) </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[a-z&amp;&amp;[^m-p]] </span>

</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">a through z, and not m through
  p: [a-lq-z] (<strong>subtraction</strong>
) </span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align: left;">&nbsp;</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong>Predefined Character Classes</strong>
</p>
<table class="MsoNormalTable" border="1" cellpadding="0">
<tbody>
<tr>
<td colspan="2" style="padding: 0.75pt;">
<p class="MsoNormal" align="center" style="text-align: center;"><strong><span style="font-size: 12pt;">Predefined Character Classes</span>
</strong>

</p>
</td>
</tr>
<tr>
<td width="15" style="padding: 0.75pt; width: 11.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">. </span>

</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">Any character (may or may not
  match line terminators) </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\d</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">A digit: </span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[0-9]</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\D</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">A non-digit: </span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[^0-9]</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\s</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">A whitespace character: </span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[ \t\n\x0B\f\r]</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\S</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">A non-whitespace character: </span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[^\s]</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\w</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">A word character: </span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[a-zA-Z_0-9]</span>

</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\W</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">A non-word character: </span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[^\w]</span>
<span style="font-size: 12pt;"> </span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong>Quantifiers</strong>

</p>
<table class="MsoNormalTable" border="1" width="546" cellpadding="0" style="width: 409.5pt;">
<tbody>
<tr>
<td colspan="3" style="padding: 0in; background: #dedeef none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
<p class="MsoNormal" align="center" style="text-align: center;"><span style="font-size: 12pt;">&nbsp;<strong>Quantifiers</strong>
</span>
</p>
</td>
<td rowspan="2" width="48%" style="padding: 0in; background: #dedeef none repeat scroll 0% 0%; width: 48%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span style="font-size: 12pt;">&nbsp;Meaning</span>
</strong>

</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="16%" style="padding: 0in; background: #ffe1e1 none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;<strong>Greedy</strong>
</span>
</p>
</td>
<td width="16%" style="padding: 0in; background: #e9fceb none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;<strong>Reluctant</strong>
</span>
</p>
</td>
<td width="16%" style="padding: 0in; background: #ffffdb none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;<strong>Possessive</strong>
</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="16%" style="padding: 0in; background: #ffe1e1 none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X?</span>

</p>
</td>
<td width="16%" style="padding: 0in; background: #e9fceb none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X??</span>

</p>
</td>
<td width="16%" style="padding: 0in; background: #ffffdb none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X?+</span>

</p>
</td>
<td width="48%" style="padding: 0in; background: #dedeef none repeat scroll 0% 0%; width: 48%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X</span>
</em>
<span style="font-size: 12pt;">, once or not at all</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="16%" style="padding: 0in; background: #ffe1e1 none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X*</span>

</p>
</td>
<td width="18%" style="padding: 0in; background: #e9fceb none repeat scroll 0% 0%; width: 18%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X*?</span>

</p>
</td>
<td width="16%" style="padding: 0in; background: #ffffdb none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X*+</span>

</p>
</td>
<td width="48%" style="padding: 0in; background: #dedeef none repeat scroll 0% 0%; width: 48%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X</span>
</em>
<span style="font-size: 12pt;">, zero or more times</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="16%" style="padding: 0in; background: #ffe1e1 none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X+</span>

</p>
</td>
<td width="18%" style="padding: 0in; background: #e9fceb none repeat scroll 0% 0%; width: 18%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X+?</span>

</p>
</td>
<td width="16%" style="padding: 0in; background: #ffffdb none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X++</span>

</p>
</td>
<td width="48%" style="padding: 0in; background: #dedeef none repeat scroll 0% 0%; width: 48%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X</span>
</em>
<span style="font-size: 12pt;">, one or more times</span>
</p>
</td>
</tr>
<tr style="height: 0.25in;">
<td width="16%" style="padding: 0in; background: #ffe1e1 none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X{n} </span>

</p>
</td>
<td width="16%" style="padding: 0in; background: #e9fceb none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X{n}? </span>

</p>
</td>
<td width="18%" style="padding: 0in; background: #ffffdb none repeat scroll 0% 0%; width: 18%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X{n}+ </span>

</p>
</td>
<td width="48%" style="padding: 0in; background: #dedeef none repeat scroll 0% 0%; width: 48%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X</span>
</em>
<span style="font-size: 12pt;">, exactly </span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">n</span>
</em>
<span style="font-size: 12pt;"> times</span>
</p>
</td>
</tr>
<tr style="height: 0.25in;">
<td width="16%" style="padding: 0in; background: #ffe1e1 none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X{n,}</span>

</p>
</td>
<td width="18%" style="padding: 0in; background: #e9fceb none repeat scroll 0% 0%; width: 18%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X{n,}?</span>

</p>
</td>
<td width="16%" style="padding: 0in; background: #ffffdb none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X{n,}+</span>

</p>
</td>
<td width="48%" style="padding: 0in; background: #dedeef none repeat scroll 0% 0%; width: 48%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X</span>
</em>
<span style="font-size: 12pt;">, at least </span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">n</span>
</em>
<span style="font-size: 12pt;"> times</span>
</p>
</td>
</tr>
<tr style="height: 0.25in;">
<td width="16%" style="padding: 0in; background: #ffe1e1 none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X{n,m}</span>

</p>
</td>
<td width="16%" style="padding: 0in; background: #e9fceb none repeat scroll 0% 0%; width: 16%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X{n,m}?</span>

</p>
</td>
<td width="18%" style="padding: 0in; background: #ffffdb none repeat scroll 0% 0%; width: 18%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X{n,m}+</span>

</p>
</td>
<td width="48%" style="padding: 0in; background: #dedeef none repeat scroll 0% 0%; width: 48%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 0.25in;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">X</span>
</em>
<span style="font-size: 12pt;">, at least </span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">n</span>
</em>
<span style="font-size: 12pt;"> but not more than </span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">m</span>
</em>
<span style="font-size: 12pt;"> times</span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong>Capturing Groups</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">In the expression </span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">((A)(B(C)))</span>
<span style="font-size: 12pt;">, for example, there are four such groups: </span>
</p>
<ol type="1">
<li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">((A)(B(C)))</span>
<span style="font-size: 12pt;"> </span>
</li>
<li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">(A)</span>
<span style="font-size: 12pt;"> </span>
</li>
<li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">(B(C))</span>
<span style="font-size: 12pt;"> </span>
</li>
<li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">(C) </span>

</li>
</ol>
<p class="MsoNormal" align="left" style="text-align: left;">There is also a special group,
group 0, which always represents the entire expression.</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">group function</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">public int start(int group)</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">public int end(int group)</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">public String group(int group)</span>
</p>
<h3>Backreferences</h3>
<p class="MsoNormal" align="left" style="text-align: left;">The section of the input string
matching the capturing group(s) is saved in memory for later recall via <em>backreference</em>
.
A backreference is specified in the regular expression as a backslash (<code><span style="font-size: 10pt;">\</span>
</code>
) followed by a digit indicating the
number of the group to be recalled. To match any 2 digits, followed by the
exact same two digits, you would use <code><span style="font-size: 10pt;">(\d\d)\1</span>
</code>
as the regular expression</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span style="font-size: 12pt;">&nbsp;</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span style="font-size: 12pt;">Boundary Matchers</span>
</strong>
</p>
<table class="MsoNormalTable" border="1" width="405" cellpadding="0" style="width: 303.75pt;">
<tbody>
<tr style="height: 16.5pt;">
<td colspan="2" style="padding: 0in; height: 16.5pt;">
<p class="MsoNormal" align="center" style="text-align: center;"><span style="font-size: 12pt;">&nbsp;<strong>Boundary Matchers</strong>
</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="11%" style="padding: 0in; width: 11%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">^</span>

</p>
</td>
<td width="89%" style="padding: 0in; width: 89%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;The beginning of a line</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="11%" style="padding: 0in; width: 11%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">$</span>

</p>
</td>
<td width="89%" style="padding: 0in; width: 89%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;The end of a line</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="11%" style="padding: 0in; width: 11%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\b</span>

</p>
</td>
<td width="89%" style="padding: 0in; width: 89%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;A word boundary</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="11%" style="padding: 0in; width: 11%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\B</span>

</p>
</td>
<td width="89%" style="padding: 0in; width: 89%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;A non-word boundary</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="11%" style="padding: 0in; width: 11%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\A</span>

</p>
</td>
<td width="89%" style="padding: 0in; width: 89%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;The beginning of the
  input</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="11%" style="padding: 0in; width: 11%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\G</span>

</p>
</td>
<td width="89%" style="padding: 0in; width: 89%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;The end of the previous
  match</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="11%" style="padding: 0in; width: 11%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\Z</span>

</p>
</td>
<td width="89%" style="padding: 0in; width: 89%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;The end of the input but
  for the final terminator, if any</span>
</p>
</td>
</tr>
<tr style="height: 17.25pt;">
<td width="11%" style="padding: 0in; width: 11%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">\z</span>

</p>
</td>
<td width="89%" style="padding: 0in; width: 89%; height: 17.25pt;">
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;The end of the input</span>
</p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span style="font-size: 12pt;">Pattern class</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt; color: #339966;">static method</span>
</p>
<p class="MsoNormal"><span style="font-size: 12pt;">Pattern.matches</span>
<span style="font-size: 8pt; font-family: Tahoma;">(String regex, CharSequence input)</span>
<span style="font-size: 12pt;">;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">Pattern.compile</span>
<span style="font-size: 8pt; font-family: Tahoma;">(String regex, int flags)</span>
<span style="font-size: 12pt;">;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt; color: #339966;">instance method</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">Matcher matcher = pattern.matcher(</span>
<span style="font-size: 8pt; font-family: Tahoma;">CharSequence input</span>
<span style="font-size: 12pt;">);</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">pattern.split(</span>
<span style="font-size: 8pt; font-family: Tahoma;">CharSequence input)</span>
<span style="font-size: 12pt;">;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt; color: #339966;">java.lang.String equivalence</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">str.matches(regex);</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">String[] str.split(regex);</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">str.replace(regex, replacement);</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 12pt;">&nbsp;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span style="font-size: 12pt;">Matcher class</span>
</strong>
</p>
<h4><span style="font-size: 11pt; font-weight: normal; color: #339966;">Index Methods</span>
</h4>
<p class="MsoNormal"><em>Index methods</em>
 provide useful index values that show
precisely where the match was found in the input string: </p>
<ul type="disc">
<li class="MsoNormal" style="text-align: left;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public int start()</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#start%28%29" target="_blank"><code>
</code>
</a>
:
     Returns the start index of the previous match. </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public int start(int group)</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#start%28int%29" target="_blank"><code>
</code>
</a>
</span>
:
     Returns the start index of the subsequence captured by the given group
     during the previous match operation. </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public int end()</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#end%28%29" target="_blank"><code>
</code>
</a>
</span>
:
     Returns the offset after the last character matched. </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public int end(int group)</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#end%28int%29" target="_blank"><code>
</code>
</a>
</span>
:
     Returns the offset after the last character of the subsequence captured by
     the given group during the previous match operation. </li>
</ul>
<h4><span style="font-size: 11pt; font-weight: normal; color: #339966;">Study Methods</span>
</h4>
<p class="MsoNormal"><em>Study methods</em>
 review the input string and return a
boolean indicating whether or not the pattern is found. </p>
<ul type="disc">
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public boolean lookingAt()</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#lookingAt%28%29" target="_blank"><code>
</code>
</a>
</span>
:
     Attempts to match the input sequence, <strong>starting</strong>
     at the beginning of the region, against the pattern. </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public boolean find()</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#find%28%29" target="_blank"><code>
</code>
</a>
</span>
:
     Attempts to find the next subsequence of the input sequence that matches
     the pattern. </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public boolean find(int start)</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#find%28int%29" target="_blank"><code>
</code>
</a>
</span>
:
     Resets this matcher and then attempts to find the next subsequence of the
     input sequence that matches the pattern, starting at the specified index. </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public boolean matches()</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#matches%28%29" target="_blank"><code>
</code>
</a>
</span>
:
     Attempts to match the entire region against the pattern. </li>
</ul>
<h4><span style="font-size: 11pt; font-weight: normal; color: #339966;">Replacement Methods</span>
</h4>
<p class="MsoNormal"><em>Replacement methods</em>
 are useful methods for replacing
text in an input string. </p>
<ul type="disc">
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public Matcher
     appendReplacement(StringBuffer sb, String replacement)</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#appendReplacement%28java.lang.StringBuffer,%20java.lang.String%29" target="_blank"><code>
</code>
</a>
</span>
:
     Implements a non-terminal append-and-replace step. </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public StringBuffer
     appendTail(StringBuffer sb)</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#appendTail%28java.lang.StringBuffer%29" target="_blank"><code>
</code>
</a>
</span>
: Implements a
     terminal append-and-replace step. </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public String replaceAll(String
     replacement)</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#replaceAll%28java.lang.String%29" target="_blank"><code>
</code>
</a>
</span>
: Replaces every subsequence of the
     input sequence that matches the pattern with the given replacement string.
     </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public String
     replaceFirst(String replacement)</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#replaceFirst%28java.lang.String%29" target="_blank"><code>
</code>
</a>
</span>
: Replaces the
     first subsequence of the input sequence that matches the pattern with the
     given replacement string. </li>
<li class="MsoNormal" style="text-align: left;"><span style="color: fuchsia;"><code><span style="font-size: 10pt; text-decoration: none; color: fuchsia;">public static String
     quoteReplacement(String s)</span>
</code>
<a href="http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html#quoteReplacement%28java.lang.String%29" target="_blank"><code>
</code>
</a>
</span>
: Returns a literal
     replacement <code><span style="font-size: 10pt;">String</span>
</code>
 for
     the specified <code><span style="font-size: 10pt;">String</span>
</code>
.
     This method produces a <code><span style="font-size: 10pt;">String</span>
</code>
     that will work as a literal replacement <code><span style="font-size: 10pt;">s</span>
</code>
     in the <code><span style="font-size: 10pt;">appendReplacement</span>
</code>
     method of the <code><span style="font-size: 10pt;">Matcher</span>
</code>
     class. The <code><span style="font-size: 10pt;">String</span>
</code>
     produced will match the sequence of characters in <code><span style="font-size: 10pt;">s</span>
</code>
 treated as a literal sequence.
     Slashes (<code><span style="font-size: 10pt;">'\'</span>
</code>
) and
     dollar signs (<code><span style="font-size: 10pt;">'$'</span>
</code>
) will
     be given no special meaning. </li>
</ul>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #339966;">java.lang.String
equivalence</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">str.replaceFirst(regex,
replacement);</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">str.replaceAll(regex,
replacement);</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">Some example:</span>
</strong>
</p>
<ul type="disc" style="margin-top: 0in;">
<li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">Use start() and end()</span>
</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left: 0.5in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Pattern pat = Pattern.<em>compile</em>
(<span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">regex</span>
);</span>

</p>
<p class="MsoNormal" align="left" style="margin-left: 0.5in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Matcher mat = pat.matcher(input);<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>

</p>
<p class="MsoNormal" align="left" style="margin-left: 0.5in; text-align: left;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">while</span>
</strong>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">(mat.find()) {</span>

</p>
<p class="MsoNormal" align="left" style="margin-left: 63pt; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">System.</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">out</span>
</em>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.println(mat.start());</span>

</p>
<p class="MsoNormal" align="left" style="margin-left: 42pt; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>
System.</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">out</span>
</em>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.println(mat.end());<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>

</p>
<p class="MsoNormal" align="left" style="margin-left: 0.5in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span>
</p>
<ul type="disc" style="margin-top: 0in;">
<li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">Use matches() and lookAt()</span>
</li>
</ul>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
String input = </span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&quot;ofoooooooooooo&quot;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span>

</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
String regex = </span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&quot;foo&quot;</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span>

</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
Pattern pat = Pattern.<em>compile</em>
(regex);</span>

</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
Matcher mat = pat.matcher(input);</span>

</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>

</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
System.</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">out</span>
</em>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.<span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">println</span>
(mat.lookingAt());<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//true</span>

</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
System.</span>
<em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">out</span>
</em>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.<span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">println</span>
(mat.matches());<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//false</span>

</p>
<ul type="disc" style="margin-top: 0in;">
<li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">Use appendReplacement() and <span>&nbsp; </span>
appendTail()</span>
</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left: 0.65in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Pattern p = Pattern.compile(&quot;cat&quot;);</span>
</p>
<p class="MsoNormal" align="left" style="margin-left: 0.65in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Matcher m = p.matcher(&quot;a cat&quot;);</span>
</p>
<p class="MsoNormal" align="left" style="margin-left: 0.65in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">StringBuffer sb = new StringBuffer();</span>
</p>
<p class="MsoNormal" align="left" style="margin-left: 0.65in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">while (m.find()) {</span>
</p>
<p class="MsoNormal" align="left" style="margin-left: 0.65in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>
m.appendReplacement(sb,
&quot;dog&quot;);</span>
</p>
<p class="MsoNormal" align="left" style="margin-left: 0.65in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span>
</p>
<p class="MsoNormal" align="left" style="margin-left: 0.65in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">m.appendTail(sb);</span>
</p>
<p class="MsoNormal" align="left" style="margin-left: 0.65in; text-align: left;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">System.out.println(sb);<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//just like &ldquo;a cat&rdquo;.replaceAll(&ldquo;..&rdquo;);</span>

</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/207018#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 23 Jun 2008 10:37:38 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/207018</link>
        <guid>http://desert.javaeye.com/blog/207018</guid>
      </item>
      <item>
        <title>ImageServlet</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/198252" style="color:red;">http://desert.javaeye.com/blog/198252</a>&nbsp;
          发表时间: 2008年05月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>public class ImageServlet extends HttpServlet {<br />
<br />
&nbsp;&nbsp;&nbsp; @Override<br />
&nbsp;&nbsp;&nbsp; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //get the image parameter<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String img = req.getParameter(&quot;img&quot;);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(img == null) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; throw new RuntimeException(&quot;You must sepcify a img&quot;);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Get the absolute path of the image<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletContext sc = getServletContext();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filename = sc.getRealPath(img);&nbsp;&nbsp;&nbsp; //relative to /WebContent<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get the MIME type of the image<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String mimeType = sc.getMimeType(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mimeType == null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc.log(&quot;Could not get MIME type of &quot;+filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Set content type<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resp.setContentType(mimeType);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Set content size<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File file = new File(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resp.setContentLength((int)file.length());<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Open the file and output streams<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream in = new FileInputStream(file);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputStream out = resp.getOutputStream();<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Copy the contents of the file to the output stream<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] buf = new byte[1024];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int count = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((count = in.read(buf)) &gt;= 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.write(buf, 0, count);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.close();<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; @Override<br />
&nbsp;&nbsp;&nbsp; protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IOException {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; doGet(req, resp);<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p>使用</p>
<p>&lt;img src=&quot;imageServlet?img=/path/to/image.jpg&quot;/&gt;</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/198252#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 29 May 2008 14:26:58 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/198252</link>
        <guid>http://desert.javaeye.com/blog/198252</guid>
      </item>
      <item>
        <title>六一节快到了，收集些小朋友的笑话，绝对爆笑！</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/198233" style="color:red;">http://desert.javaeye.com/blog/198233</a>&nbsp;
          发表时间: 2008年05月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>1、题目：一边&hellip;&hellip;一边&hellip;&hellip; <br />
&nbsp;&nbsp; 小朋友写：他一边脱衣服，一边穿裤子。 <br />
&nbsp;&nbsp; 老师批语：他到底是要脱还是要穿啊？ <br />
&nbsp;&nbsp; ２、题目：其中 <br />
&nbsp;&nbsp; 小朋友写：我的其中一只左脚受伤了。 <br />
&nbsp;&nbsp; 老师批语：你是蜈蚣吗？ <br />
&nbsp;&nbsp; ３、题目：陆陆续续 <br />
&nbsp;&nbsp; 小朋友写：下班了，爸爸陆陆续续的回家了。 <br />
&nbsp;&nbsp; 老师批语：你到底有几个爸爸呀？ <br />
&nbsp;&nbsp; ４、题目：难过 <br />
&nbsp;&nbsp; 小朋友写：我家门前有条水沟很难过。 <br />
&nbsp;&nbsp; 老师批语：老师更难过。 <br />
&nbsp;&nbsp; ５、题目：又&nbsp; 又 <br />
&nbsp;&nbsp; 小朋友写：我的妈妈又矮又高又胖又瘦。 <br />
&nbsp;&nbsp; 老师批语；你的妈妈 是变形金钢吗？ <br />
&nbsp;&nbsp; ６、题目：你看 <br />
&nbsp;&nbsp; 小朋友写：你看什么看！没看过啊 <br />
&nbsp;&nbsp; 老师批语：没看过 <br />
&nbsp;&nbsp; ７、题目：欣欣向荣 <br />
&nbsp;&nbsp; 小朋友写：欣欣向荣荣告白。 <br />
&nbsp;&nbsp; 老师批语：连续剧不要看太多了！ <br />
&nbsp;&nbsp; ８、题目：好吃 <br />
&nbsp;&nbsp; 小朋友写：好吃个屁。 <br />
&nbsp; 老师批语：有些东西是不能吃的。 <br />
&nbsp;&nbsp; ９、题目：天真 <br />
&nbsp;&nbsp; 小朋友写：今天真热。 <br />
&nbsp;&nbsp; 老师批语：你真天真。 <br />
&nbsp;&nbsp; 10、题目：果然 <br />
&nbsp;&nbsp; 小朋友写：昨天我吃水果，然后喝凉水。 <br />
&nbsp;&nbsp; 老师批语：是词组，不能分开的。 <br />
&nbsp;&nbsp; 11、题目：先&hellip;&hellip;再&hellip;&hellip;，例题：先吃饭，再冼澡。 <br />
&nbsp;&nbsp; 小朋友写：先生，再见！ <br />
&nbsp;&nbsp; 老师批语：想像力超过了地球人的智慧。 <br />
&nbsp;&nbsp; 12、题目：况且 <br />
&nbsp;&nbsp; 小朋友写：一列火车经过，况且况且况且况且况且况 <br />
&nbsp;&nbsp; 老师批语：我死了算了&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/198233#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 29 May 2008 13:56:23 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/198233</link>
        <guid>http://desert.javaeye.com/blog/198233</guid>
      </item>
      <item>
        <title>ValueBinding 使用</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/194321" style="color:red;">http://desert.javaeye.com/blog/194321</a>&nbsp;
          发表时间: 2008年05月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>Bean:</strong></p>
<p>public class User {<br />
&nbsp;&nbsp;&nbsp; private String name;<br />
<br />
&nbsp;&nbsp;&nbsp; public String getName() {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return name;<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public void setName(String name) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.name = name;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
}</p>
<p><strong>Config</strong></p>
<p>&nbsp;&nbsp;&nbsp; &lt;managed-bean&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;managed-bean-name&gt;user&lt;/managed-bean-name&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;managed-bean-class&gt;org.desert.User&lt;/managed-bean-class&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/managed-bean&gt;</p>
<p><strong>Using</strong>
</p>
<p><br />
Application app = FacesContext.getCurrentInstance().getApplication();<br />
ValueBinding vb = app.createValueBinding(&quot;#{user}&quot;);</p>
<p>User u = (User) vb.getValue(FacesContext.getCurrentInstance());</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/194321#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 19 May 2008 11:47:27 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/194321</link>
        <guid>http://desert.javaeye.com/blog/194321</guid>
      </item>
      <item>
        <title>dojo and ajax</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/193122" style="color:red;">http://desert.javaeye.com/blog/193122</a>&nbsp;
          发表时间: 2008年05月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal"><span style="font-family: 宋体; font-size: small;">XHR
has limitations. The big one is that </span>

<span style="font-size: small;"><code><span lang="EN-US" style="font-size: 12pt;">url:</span>

</code>
</span>

<span style="font-family: 宋体; font-size: small;"> is not cross-domain: you can't submit the request
outside of the current host (eg: to </span>

<span style="font-size: small;"><code><span lang="EN-US" style="font-size: 12pt;">url:&quot;http://google.com&quot;</span>

</code>
</span>

<span style="font-family: 宋体; font-size: small;">). It is a known limitation
and a common mistake when getting excited about Ajax.</span>

</p>
<p style="text-align: center;"><strong>dojo.xhrGet</strong>
<span class="punctuation">
</span>
</p>
<p><span style="font-family: courier new,courier; font-size: small;">function init(){<br />
&nbsp;&nbsp;&nbsp; dojo.xhrGet({<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; url:'ajaxServlet',<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; content:{param1: 'value'},<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; load:function(resp, ioArgs){<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; console.debug(resp);<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; });<br />
}</span>
</p>
<p>dojo.addOnLoad(init);</p>
<p class="MsoNormal"><code><strong><span lang="EN-US" style="font-size: 12pt;">Some import configurations:</span>
</strong>
</code>
<span style="font-size: 12pt; font-family: 宋体;"> </span>
</p>
<p><span style="font-family: 宋体; font-size: small;"><strong><span lang="EN-US">url: </span>
</strong>
<span lang="EN-US">URL to server endpoint.</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><strong><span style="font-size: 12pt;">load: </span>
</strong>
</span>
<span style="font-family: 宋体; font-size: small;">Optional.<strong> </strong>
Process what server return.</span>
</p>
<p><span style="font-family: 宋体; font-size: small;"><code><strong><span lang="EN-US">error: </span>
</strong>
</code>
<span lang="EN-US">Optional.<code>When error happen, call this function.</code>
</span>
</span>
</p>
<p><span style="font-family: 宋体; font-size: small;"><strong><span lang="EN-US">content:</span>
</strong>
<span lang="EN-US"> Optional. Contains properties with string values. These properties will be serialized as name1=value2 and passed in the request.
</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><code><strong><span lang="EN-US" style="font-size: 12pt;">handleAs:</span>
</strong>
</code>
</span>
<span style="font-family: 宋体; font-size: small;"> Optional. how we handle
what is coming back. Acceptable values are: text (default), json,
json-comment-optional, json-comment-filtered, javascript, xml.返回的数据如何处理</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><strong><span style="font-size: 12pt;">form: </span>
</strong>
</span>
<span style="font-family: 宋体; font-size: small;">the form to submit.（url和form二选一）</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><strong><span style="font-size: 12pt;">preventCache: </span>
</strong>
</span>
<span style="font-family: 宋体; font-size: small;">Optional. Default is false.
If true, then a &quot;dojo.preventCache&quot; parameter is sent in the request
with a value that changes with each request (timestamp). Useful only with
GET-type requests.</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><strong><span style="font-size: 12pt;">sync: </span>
</strong>
</span>
<span style="font-family: 宋体; font-size: small;">Optional. false is default. Indicates
whether the request should be a synchronous (blocking) request.（为true则会等这个request处理完才会继续执行)</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><strong><span style="font-size: 12pt;">timeout: </span>
</strong>
</span>
<span style="font-size: 12pt; font-family: 宋体;"><span style="font-size: small;">Optional. Milliseconds to wait for the
response. If this time passes, the then error callbacks are called.</span>
</span>
</p>
<p class="MsoNormal" style="text-align: center;"><strong>dojo.xhrPost</strong>
</p>
<p class="MsoNormal">&nbsp;</p>
<p style="line-height: 12pt;"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US">All
Dojo XHR methods are bi-directional. The only difference is the method. Using <code><strong>dojo.xhrPost</strong>
</code>
, we use the POST
method, embedding the data in the request (as opposed to the query string as
with <code><strong>dojo.xhrGet</strong>
</code>
).&nbsp;</span>
</span>
</p>
<p style="line-height: 12pt;"><span style="font-family: 宋体; font-size: small;"><strong>Submit the form</strong>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;">&lt;form id=&rdquo;loginForm&rdquo;&gt;</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
Name:&lt;input type=&rdquo;text&rdquo; id=&rdquo;firstName&rdquo;/&gt;</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;">&lt;/form&gt;</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;">
<span lang="EN-US" style="font-size: 12pt;">add in some
JavaScript to submit the form by using </span>
<code><span lang="EN-US" style="font-size: 12pt;">dojo.connect</span>
</code>
<span lang="EN-US" style="font-size: 12pt;"> to listen to the native </span>
<code><span lang="EN-US" style="font-size: 12pt;">onSubmit</span>
</code>
<span lang="EN-US" style="font-size: 12pt;"> event and then post the contents of the form to an
alternate URL:</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;">var
formSubmit=function(e){</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
e.preventDefaut();<span> </span>
//prevent form submit</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
dojo.xhrPost({</span>
</span>
</p>
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
url: &ldquo;ajaxServlet&rdquo;,</span>
</span>
</p>
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
<strong>form</strong>
: &ldquo;mainForm&rdquo;,</span>
</span>
</p>
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
<strong>handleAs</strong>
: &ldquo;text&rdquo;,</span>
</span>
</p>
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
<strong>handle</strong>
: function(data, args){</span>
</span>
</p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt;"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&hellip;&hellip;&hellip;&hellip;</span>
</span>
</p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt;"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;">}</span>
</span>
</p>
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;">});</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;">};</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;">dojo.addOnLoad(function({</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
var theForm = dojo.byId(&ldquo;loginForm&rdquo;);</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
dojo.connect(theForm, &ldquo;onclick&rdquo;,
formSubmit);</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US" style="font-size: 12pt;">}));</span>
</span>
</p>
<p class="MsoNormal"><span style="font-family: 宋体; font-size: small;"><span lang="EN-US">Getting text back from the server is nice,
but the really great stuff comes when you start passing JavaScript objects
around. Using a different </span>
<code><strong><span lang="EN-US" style="font-size: 12pt;">handleAs</span>
</strong>
</code>
<code><span lang="EN-US" style="font-size: 12pt;">:</span>
</code>
<span lang="EN-US"> &ldquo;json&rdquo;, we
can alter how Dojo handles the response data.</span>
</span>
</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><strong>如何在server端取得数据</strong>
</p>
<p class="MsoNormal">content: {a: 11, b: 22}</p>
<p class="MsoNormal">String p1 = request.getParameter(&quot;a&quot;);</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><strong>dojo.io.iframe</strong>
</p>
<p class="MsoNormal">一般是用来上传文件。</p>
<p><code class="html"><span class="tag">&lt;script&gt;
</span>
</code>
</p>
<p><code class="html"><span class="tag">function sendForm(){
   </span>
</code>
</p>
<p>&nbsp;&nbsp;&nbsp; <code class="html"><span class="tag">url: &quot;uploadservlet&quot;,	//form's action, 如果url 或action 设定任意一个即可
   </span>
</code>
</p>
<p>&nbsp;&nbsp;&nbsp; <code class="html"><span class="tag">method: &quot;post&quot;, 		//form's method
   </span>
</code>
</p>
<p>&nbsp;&nbsp;&nbsp; <code class="html"><span class="tag">form: &quot;myForm&quot;,		//form's id
   </span>
</code>
</p>
<p>&nbsp;&nbsp;&nbsp; <code class="html"><span class="tag">load: function(response, ioArgs){
	//succeed
   }</span>
</code>
</p>
<p><code class="html"><span class="tag">}
</span>
</code>
</p>
<p><code class="html"><span class="tag">&lt;/script&gt;</span>
</code>
</p>
<p>&lt;form id=&quot;myForm&quot; enctype=&quot;multipart/form-data&quot; action=&quot;uploadServlet&quot;&gt;</p>
<p>&nbsp;&nbsp;&nbsp; Name: &lt;input type=&quot;text&quot; name=&quot;name&quot;/&gt;</p>
<p>&nbsp;&nbsp;&nbsp; File: &lt;input type=&quot;file&quot; name=&quot;theFile&quot;/&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;button onclick=&quot;sendForm();&quot;&gt;Submit&lt;/button&gt;</p>
<p>&lt;/form&gt;</p>
<p class="MsoNormal">dojo.io.iframe实际上和dojo.xhr使用是相同的，不同的只是iframe可以用来上传文件</p>
<p>
<code>
</code>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/193122#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 May 2008 23:14:39 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/193122</link>
        <guid>http://desert.javaeye.com/blog/193122</guid>
      </item>
      <item>
        <title>Dojo 与style相关的函数整理</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/193109" style="color:red;">http://desert.javaeye.com/blog/193109</a>&nbsp;
          发表时间: 2008年05月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal"><strong><span style="font-family: 宋体;">1)dojo.addClass(node<span class="jsdoc-comment-type">:
DomNode|String</span>

, classStr<span class="jsdoc-comment-type">: String</span>

)</span>

</strong>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;"><strong>添加某class到节点，</strong>

</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">var node=dojo.byId('divv');</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">dojo.addClass('divv', 'color');</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">dojo.addClass(node, 's1');</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">&nbsp;</span>

</p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">2)var bool = </span>

</strong>

<strong><span style="font-family: 宋体;">dojo.hasClass(node<span class="jsdoc-comment-type">: DomNode|String</span>

, classStr<span class="jsdoc-comment-type">: String</span>

)</span>

</strong>

<span style="font-family: 宋体;">&nbsp;</span>
</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">3)var bool = dojo.removeClass(node<span class="jsdoc-comment-type">: DomNode|String</span>

, classStr<span class="jsdoc-comment-type">: String</span>

) </span>

</strong>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">Removes the
specified classes from node.</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">&nbsp;</span>

</p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">4)dojo.toggleClass(node<span class="jsdoc-comment-type">:
DomNode|String</span>

, classStr<span class="jsdoc-comment-type">: String</span>

,
condition<span class="jsdoc-comment-type">: Boolean?</span>

) </span>

</strong>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">添加或移除某节点的class,可以传入condition强制开或关class属性</span>
</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">5)dojo.style(node<span class="jsdoc-comment-type">:
DomNode|String</span>

, style<span class="jsdoc-comment-type">: Object?</span>

,
value<span class="jsdoc-comment-type">: String?</span>

) </span>

</strong>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">可传入2个或3个参数，可设定或读取style</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">dojo.style(&lsquo;node&rsquo;, &lsquo;color&rsquo;);<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>

<span>&nbsp;&nbsp;&nbsp; </span>

//get</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">dojo.style(&lsquo;node&rsquo;, {color: &lsquo;red&rsquo;})<span> </span>

<span>&nbsp;&nbsp;&nbsp; </span>

//set</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">dojo.style(&lsquo;node&rsquo;, &lsquo;color&rsquo;, &lsquo;red&rsquo;);<span> </span>

//set</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">&nbsp;</span>

</p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">6)批量处理style，NodeList功能 </span>

</strong>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">dojo.query('div').style({color:'blue'});</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">dojo.query('div').addClass(&lsquo;className&rsquo;);</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">dojo.query('div').removeClass(&lsquo;className&rsquo;);</span>

</p>
<p class="MsoNormal"><span style="font-family: 宋体;">dojo.query('div').toggleClass(&lsquo;className&rsquo;);</span>

</p>
          <br/>
          <span style="color:red;">
            <a href="http://desert.javaeye.com/blog/193109#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 May 2008 22:10:21 +0800</pubDate>
        <link>http://desert.javaeye.com/blog/193109</link>
        <guid>http://desert.javaeye.com/blog/193109</guid>
      </item>
      <item>
        <title>Dojo functional function(函数结构)</title>
        <author>xushaoxun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://desert.javaeye.com">xushaoxun</a>&nbsp;
          链接：<a href="http://desert.javaeye.com/blog/192737" style="color:red;">http://desert.javaeye.com/blog/192737</a>&nbsp;
          发表时间: 2008年05月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span style="font-size: 12pt; font-family: 宋体;">特点：传入一个<span lang="EN-US">array,
</span>
和<span lang="EN-US">callback</span>
函数，并用<span lang="EN-US">callback</span>
函数循环遍历<span lang="EN-US">array.</span>
<span lang="EN-US"></span>
</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体;">callback</span>
</strong>
<strong><span style="font-size: 12pt; font-family: 宋体;">函数<span lang="EN-US">:
function(item[, index, array_alias]), </span>
</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体;">item:</span>
</strong>
<strong><span style="font-size: 12pt; font-family: 宋体;">遍历到的<span lang="EN-US">array
item. </span>
</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体;">index: </span>
</strong>
<strong><span style="font-size: 12pt; font-family: 宋体;">当前<span lang="EN-US">item</span>
的下标<span lang="EN-US"></span>
</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体;">array_alias: array
</span>
</strong>
<strong><span style="font-size: 12pt; font-family: 宋体;">的别名<span lang="EN-US"></span>
</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体;">&nbsp;</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="margin-left: 18pt; text-align: left; text-indent: -18pt;"><!-- [if !supportLists]--><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体; color: black;"><span>1)<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp; </span>
</span>
</span>
</strong>
<!-- [endif]--><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体; color: black;">dojo.filter</span>
</strong>
<strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体;">(array, callback[,
thisObject]) </span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: 宋体; color: black;">数组过滤，将符合条件的<span lang="EN-US">item</span>
返回到新的<span lang="EN-US">array.</span>
</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">var </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">arr1 = [1, 2, 3, 4, 5, 6];</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"></span>
</p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">var </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">arr2 = dojo.filter(arr1, </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">function</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">(item)</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">{ return </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">item%2==0</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">}</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">); <span>&nbsp; </span>
//[2, 4, 6]</span>
</p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span>
</p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt;"><!-- [if !supportLists]--><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体; color: black;"><span>2)<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp; </span>
</span>
</span>
</strong>
<!-- [endif]--><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体; color: black;">dojo.map(arr,
callback[,</span>
</strong>
<strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体;">thisObject<span style="color: black;">]);</span>
</span>
</strong>
</p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: 宋体; color: black;">对数组的每个元素进行处理，返回新数组。</span>
<span lang="EN-US" style="font-family: 宋体;"></span>
</p>
<p class="MsoNormal"><span lang="EN-US" style="font-family: 宋体;">applies callback to
each element of arr and returns an Array with the results.</span>
<strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体; color: black;"></span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">var </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">arr3 = dojo.map([1, 2, 3], </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">function</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">(item)</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">{ return </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">item+1;</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">}</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);<span>&nbsp;&nbsp; </span>
//</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;">[2, 3, 4]</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;</span>
</p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt;"><!-- [if !supportLists]--><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体; color: black;"><span>3)<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp; </span>
</span>
</span>
</strong>
<!-- [endif]--><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体; color: black;">dojo.forEach(arr,
callback[,</span>
</strong>
<strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体;">thisObject<span style="color: black;">]);</span>
</span>
</strong>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span style="font-size: 10pt; font-family: 宋体; color: black;">对数组每个元素都使用<span lang="EN-US">callback</span>
函数。</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span lang="EN-US" style="font-family: 宋体;">for every
item in arr, callback is invoked. Return values ignored.</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">dojo.forEach(arr3, </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">function</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">(item, index)</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">{ </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">console.debug(item
+ </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #8e00ff;">&quot; &quot; </span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">+ index);</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">}</span>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span>
</p>
<p class="MsoNormal" align="left" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&nbsp;</span>
</p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt;"><!-- [if !supportLists]--><strong><span lang="EN-US" style="font-size: 12pt; font-family: 宋体; co