日期:2014-05-20  浏览次数:20815 次

java.util.regex.PatternSyntaxException 怎么解决哦?
我的程序要把图片的路径替换为cid
程序如下:

public MimeMultipart CreatHtmlMultipart(List<String> aContentpic) throws IOException, MessagingException{
logger.info("创建带图片html MimeMultipart");
MimeMultipart contentMultipart = new MimeMultipart("related");
//创建保存图片的MimeBodyPart并保存
//图片cid为图片编号,0开始
List<String> Contentpic = aContentpic;
logger.info("List contentpic.size() == "+ new Integer(Contentpic.size()).toString());
 
for(int i=0;i<Contentpic.size();i++)
{
MimeBodyPart tempBodyPart = new MimeBodyPart();
String filename = Contentpic.get(i);
FileDataSource fileDataSorce = new FileDataSource(filename);
tempBodyPart.setDataHandler(new DataHandler(fileDataSorce));
tempBodyPart.setContentID(new Integer(i).toString());
String newPicName ="cid:"+new Integer(i).toString();
text.replaceAll(filename, newPicName);
contentMultipart.addBodyPart(tempBodyPart);  
}
 
//创建代表MIME消息的MimeMultipart对象 
 
 
//创建保存html正文的MimeBodyPart对象,保存到MimeMultipart中
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent(text,"text/html;charset=gb2312");
contentMultipart.addBodyPart(htmlBodyPart);  

 

 
return contentMultipart;
  }




异常如下:



Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 3
I:/my doc/work/email/test.gif
  ^



其中/ 是windows那种反斜杠,这里不能打反斜杠。。。

------解决方案--------------------
"\\"==/,要打反斜杠得打两个
------解决方案--------------------
text.replaceAll(filename, newPicName);

filename 中含有正则表达式的特殊字符,正则表达式引擎将其解释为语法错误,改成:

text.replace(filename, newPicName);

这样就行了,按照普通字符来工作。

replaceAll 方法的第一个参数是一个正则表达式。
replace 方法虽然采用采用正则表达式工具工作的,但在其内部已经进行了字面模式处理,
所有的字符都视为普通字符处理。

不要被 replaceAll 中的 All 欺骗了,这两种方法都替换所有的字符串,只是采用的形式
不同已。
------解决方案--------------------
Java code
        String text = "<img src='I:\\my doc\\work\\email\\test.gif'>";
        text = text.replaceAll("I:\\\\my doc\\\\work\\\\email\\\\test.gif", "cid:0"); 
        System.out.print(text);

------解决方案--------------------
replace("I:/my doc/work/email/test.gif","cid:0");