java正则表达式jar_Java学习系列(六)Java面向对象之Jar命令、正则表达式、国际化详解...

首先向大家道个歉,前面3天由于在忙着写项目说明文档,所以耽误了一下。今天借着中午这段时间把前面的补回来。话不多说,下面步入正题吧!

Jar命令:jar可以把多个文件打包成一个压缩包,得到的压缩包通常有3种:1)*.jar -它里面包含N个class文件。2)*.war(Web) -它是一个Web应用打包生成的包。3)*.ear(Enterprise) -它是一个企业应用打包生成的包。这里我们学习时常用的*.jar这种方法。在运行命令窗口输入jar我们可以看到jar命令的如下参数选项:8d656a8d26d845d2bb3c2bf09013f4e4.png

举例说明几个常用的:

命令:jar -cvf test.jar *.class //为新创建的jar包取名为test

jar -cMf test.jar *.class //创建压缩包,不生成清单文件(META-INF下面的manifest.mf文件)

jar -tvf test.jar //查看压缩包

jar -xvf test.jar //解压  (加v可以看到详细的过程,可不加)

jar -uvf test.jar A.class //添加A.class到test.jar中。

【打包成可执行的JAR包】jar -cvfe my.jar UserTest *.class //通过-e告诉JVM UserTest为主类,并打包。

这样如果机器上安装了独立的虚拟机,只要双击“可执行型”的JAR包即可运行。

如果没装则:java -jar my.jar //运行

javaw -jar my.jar //主要用于有界面的程序(javaw和java差不多)

若不需要清单文件,可以使用windows里的WinRAR或WinZi压缩,然后把后缀改成.jar即可。

Jar命令的好处:方便管理。JVM可以直接加载Jar包,这样就可以一次加载N个类,效率更高。

Java程序入口(main)方法说明:public -系统来调用该方法时,不可能在同一个包中,也不会是它的子类

static -无需创建实例,直接用类名调用入口方法。--执行:java 主类类名 数组元素1 数组元素2...

String[] args:args默认是长度为0的数组,可在程序运行时动态传入args参数值。

正则表达式:就是一个可以匹配N个字符串的字符串模板。

正则表达式所支持的通配符:

.   -可以匹配任意字符。

\s  -代表一个任意空白(空格、Tab)

\S  -代表一个任意的非空白

\d  -代表一个任意的数字(digital)

\D  -代表一个任意的非数字

\w  -代表一个单词字符

-W  -代表一个任意的非单词字符

str.matches(regex);//判断str字符串是否匹配给定的正则表达式。

"123.123".replaceAll("\\.", "#"); //结果:123#123

特殊字符(实际用时记住要转义\):( ) [ ] { } \ ? * + ^(一行的开头) $(一行的结尾)|

表示出现次数的“副词”:

? --代表它前面的东西可以出现0~1次

* --代表它前面的东西可以出现0~N次

+ --代表它前面的东西可以出现1~N次

{n,m} --代表它前面的东西可以出现n~m次

{n,} --代表它前面的东西至少出现n次

{,m} --代表它前面的东西最多出现m次

{n} --代表它前面的东西必须出现n次

方括号表达式:

枚举:[ab中]  --代表a或x或者“中”。

范围:[a-c]  --代表a,b,c中的任意一个字符。

枚举与范围:[a-c1-3]--代表a,b,c,1,2,3中的任意一个字符。

表示求否:[^a-c] --代表不含a,b,c其中任意一个字符。

表示求交:[a-g&&[^b-d]]:--代表a,e,f,g中的任意一个字符。--总结:一个字符用\,多个字符用[],字符次数用{}

(com|org|cn):表示必须含有其中之一。

--除此自外,Java专门提供了两个工具类:

Pattern - 它就是代表正则表达式模板。

Matcher -代表一个匹配工具类。

find():查找下一个匹配正则表达式的字符串。group()取出上一次与正则表达式匹配的字串。

举例说明(找出邮箱):

public class RegexTest {

public static void main(String[] args) {

String str ="这本书价格是52.9元,作者的两个邮箱:一个是123@qq.com,另外一个是234@163.com";

Pattern pattern = Pattern.compile("[a-zA-Z0-9]{2,}@[a-zA-Z0-9]{2,}\\.(com|org|net|cn)");

Matcher matcher = pattern.matcher(str);

while(matcher.find()){

System.out.println(matcher.group());

}

}

}

国际化(简称:i18N):希望一个程序,可以“自适应”所有用户环境。--本质是“查找”、“替换”。

国际化的步骤:

(1)提供资源文件,负责为程序提供国际化消息,同时资源文件的文件名必须满足:_语言代码_国家代码.properties。如果资源文件包含了非西欧字符,需要使用native2ascii工具类处理这个文件。

处理格式:native2ascii  要处理的文件  生成的新文件名(资源文件)。

(2)使用ResourceBundle来加载国际化资源文件

(3)从所加载的文件中查找key对应的字符串进行替换。

--调用ResourceBundle的getMessage()方法(负责为消息中的占位符填充参数值)输出国际化消息。

举例说明1:

/*

* Description:获取Java语言的所支持的所有Locale

* */

public class LocaleTest {

public static void main(String[] args) {

Locale[] locals = Locale.getAvailableLocales();

for (Locale ls : locals) {

System.out.println(ls.getDisplayCountry() + " "

+ ls.getLanguage() + " " + ls.getCountry());

}

}

}

举例说明2:

1)我们写一个test.properties文件,内容为:hi=你好!welcome={0},欢迎你!2)执行命令行:native2ascii test.properties test_zh_CN.properties

我们将看到生成的内容如下:hi=\u4f60\u597d\uff01

welcome={0},\u6b22\u8fce\u4f60\uff01

3)编码如下:

/*

* Description:获取并替换国际化资源文件信息

* */

public class LocaleTest {

public static void main(String[] args) {

// Java 虚拟机实例的当前默认语言环境值

Locale currentLocale = Locale.getDefault();

// 加载国际化资源文件,test为资源文件名前缀

ResourceBundle bundle = ResourceBundle.getBundle("test",currentLocale);

// 从bundle所加载的文件中查找hi对应的字符串进行替换。

System.out.println(bundle.getString("hi"));

//将占位符的内容替换为“张三"

System.out.println(MessageFormat.format(bundle.getString("welcome"), "张三"));

}

}

结束语:

今天内容就讲这么多,明天开始学习Java面向对象之集合框架。内容比较多,所以打算分两次讲。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言:本资源来自于javaeye,原资源链接地址:http://www.javaeye.com/topic/67398 原文如下: 以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 apache网站下下载 在这是junit测试单元类我就不提交了,在main()方法中有几个小测试,有兴趣自己玩吧. 这个工具类目前主要有25种正规表达式(有些不常用,但那时才仔细深入的研究了一下正规,写上瘾了,就当时能想到的都写了): 1.匹配图象; 2 匹配email地址; 3 匹配匹配并提取url ; 4 匹配并提取http ; 5.匹配日期 6 匹配电话; 7 匹配身份证 8 匹配邮编代码 9. 不包括特殊字符的匹配 (字符串中不包括符号 数学次方号^ 单引号' 双引号" 分号; 逗号, 帽号: 数学减号- 右尖括号> 左尖括号 0) 12 匹配正整数 13 匹配非正整数(负整数 + 0) 14 匹配负整数; 15. 匹配整数 ; 16 匹配非负浮点数(正浮点数 + 0) 17. 匹配正浮点数 18 匹配非正浮点数(负浮点数 + 0) 19 匹配负浮点数; 20 .匹配浮点数; 21. 匹配由26个英文字母组成的字符串; 22. 匹配由26个英文字母的大写组成的字符串 23 匹配由26个英文字母的小写组成的字符串 24 匹配由数字和26个英文字母组成的字符串; 25 匹配由数字、26个英文字母或者下划线组成的字符串; java源码: /* * Created on 2005-4-15 * * Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The backslash character \\ 反斜杠 * \0n The character with octal value 0n (0 <= n <= 7) \0n 十进制数 (0 <= n <= 7) * \0nn The character with octal value 0nn (0 <= n <= 7) \0nn 十进制数 0nn (0 <= n <= 7) * \0mnn The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7) \0mnn 十进制数 0mnn (0 <= m <= 3, 0 <= n <= 7) * \xhh The character with hexadecimal value 0xhh \xhh 十进制数 0x

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值