近来工作中遇到的一点小问题

[size=medium]
1. 关于正则表达式使用的。
需求是所有匹配上的字符串加上特殊的标志,这个典型的使用是在搜索里面给所有的关键字加粗,关键是忽略大小写的,所以要替换的串是不同的,举个例子,比如:
[/size]

源串:aathread sdfdf Thread sdfdf Threadsdfdf Thread sdf THREAD THreadaa
关键字: thread
目标:aa<b>thread</b> sdfdf <b>Thread</b> sdfdf <b>Thread</b>sdfdf <b>Thread</b> sdf <b>THREAD</b> <b>THread</b>aa

[size=medium]
起初是想到用Matcher的replaceAll的,但是参数是死的,所以看了replaceAll的实现,然后使用了下面的代码,实际上当前匹配上的串用group可以得到:
[/size]

public class TestReplacement {
public static void main(String[] args) throws IOException {
Pattern p = Pattern.compile("thread",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("aathread sdfdf Thread sdfdf Threadsdfdf Thread sdf THREAD THreadaa");
StringBuffer sb = new StringBuffer();
while (m.find()) {
System.out.println(m.group());
m.appendReplacement(sb, "<b>"+m.group()+"</b>");
}
m.appendTail(sb);
System.out.println(sb.toString());
}
}

[size=medium]
2. 关于File的listFiles函数,这个函数如果传递的是一个文件则返回空,所以在调用之前要特别注意,判断只能传入Directory,否则肯定会抛空指针错误。我今天就是犯了这样的错误。
[/size]
[size=medium]
3. 关于BASE64编码的问题
在使用com.sun.BASE64Encoder的时候,如果使用的是encodeBuffer的静态的方法,则会在加密后加上\n\r结束符。但是它可以正确的解码。如果使用encode方法则就不会产生\n\r的分隔符。这两个方法还是有所区别。

[img]http://dl.iteye.com/upload/attachment/266856/99d5c769-fe3a-3b57-bcf5-73b4886f78f7.png[/img]

[/size]
[size=medium]
4. 关于Java File里面的renameTo方法感觉很怪异,它实现的功能和move差不多,就是把源文件移到目标路径下。但是这个在X平台下会出现一些很奇怪的问题,在windows上大家发现的问题是如果从NTFS的一个盘符里面的文件转移到FAT30盘符里面,会出错,但是X平台下基本上本路径下都会出错,所以建议大家不要使用这个API。
[/size]

[img]http://dl.iteye.com/upload/attachment/268425/15243b3e-94ad-371e-b37b-28016cd0fb82.png[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值