RSS

导航







快速搜索

高级搜索 »

注意:此页面是Spring.NET框架 1.1 参考文档的一部分。


编辑

9.1. 简介

本章内容不属于任何范畴,算是给读者的一些提示和建议。

顶部

编辑

9.2. PathMatcher

Spring.Util.PathMatcher用于匹配Ant/NAnt风格的路径名:

PathMatcher的静态方法Match可以用来进行匹配,如下:

public static bool Match(string pattern, string path)

如果不考虑大小写,需要用下面的重载:

public static bool Match(string pattern, string path, bool ignoreCase)

顶部

编辑

9.2.1.通用规则

可以使用*,?和**创建模式字符串:
  • *:匹配任意数量的非斜线字符。
  • ?:匹配一个非斜线、非小数点的任意字符。
  • **:匹配任意子目录,不考虑子目录的深度。

顶部

编辑

9.2.2.匹配文件名

下面的字符串可用于匹配文件名:

foo?bar.*

该字符串可以匹配下面所有的值:

fooAbar.txt
foo1bar.txt
foo_bar.txt
foo-bar.txt

但不能匹配下面的值:

foo.bar.txt
foo/bar.txt
foo\bar.txt

下面是经典的通配符:

*.*

可以匹配以下值:

foo.db
.db
foo
foo.bar.db
foo.db.db
db.db.db

但不匹配以下值::

c:/
c:/foo.db
c:/foo
c:/.db
c:/foo.foo.db
//server/foo

顶部

编辑

9.2.3.匹配子目录

下面的字符串可用于匹配任意深度的子目录:

**/db/**

这个字符串可以匹配下面所有的值:

/db
//server/db
c:/db
c:/spring/app/db/foo.db
//Program Files/App/spaced dir/db/foo.db
/home/spring/spaced dir/db/v1/foo.db

但不能匹配以下值:

c:/spring/app/db-v1/foo.db
/home/spring/spaced dir/db-v1/foo.db

可以用下面的组合来表示子目录的通配符:

**/bin/**/tmp/**

可以匹配以下值:

c:/spring/foo/bin/bar/tmp/a
c:/spring/foo/bin/tmp/a/b.c

但不匹配以下值

c:/spring/foo/bin/bar/temp/a
c:/tmp/foo/bin/bar/a/b.c

也可以用更为复杂的匹配模式:

**/.spring-assemblies*/**

可以匹配:

c:/.spring-assemblies
c:/.spring-assembliesabcd73xs
c:/app/.spring-assembliesabcd73xs
c:/app/.spring-assembliesabcd73xs/foo.dll
//server/app/.spring-assembliesabcd73xs

但不能匹配:

c:/app/.spring-assemblie

顶部

编辑

9.2.4. 大小写需要考虑,斜线可以任意

.NET是一个跨平台的开发环境。所以,PathMatcher类在匹配时会考虑模式字符串和路径中的大小写,比如说:

**/db/**/*.DB

可以匹配:

c:/spring/service/deploy/app/db/foo.DB

但不匹配:

c:/spring/service/deploy/app/DB/foo.DB
c:spring/service/deploy/app/spaced dir/DB/foo.DB
//server/share/service/deploy/app/DB/backup/foo.db

如果需要用大小写无关的方式匹配,应该显式的对PathMatcher进行相应的设置。(按:使用PathMatcher静态方法Match的一个重载,见API文档)

但是,斜线和反斜线的含义是一样的:

spring/foo.bar

可以匹配下面所有的值:

c:\spring\foo.bar
c:/spring\foo.bar
c:/spring/foo.bar
/spring/foo.bar
\spring\foo.bar

顶部



.NET 藏经阁 | | 版权所有 ©2008 entlib.net.cn