小弟想用java把mht文件中编码过的字符还原过来,例如
<Century;mso-hansi-font-family>(X,
原本是<Century;mso-hansi-font-family>(X,
我写的代码是:
System.out.println("Century;mso-hansi-font-family>(X,".replaceAll("&#([0-9]+);",String.valueOf((char)(Integer.parseInt("$1")))));
但是会出错,系统提示:NumberFormatException:For Input String:"$1"...
请问如何解决?
谢谢了!!!!!
<Century;mso-hansi-font-family>(X,
原本是<Century;mso-hansi-font-family>(X,
我写的代码是:
System.out.println("Century;mso-hansi-font-family>(X,".replaceAll("&#([0-9]+);",String.valueOf((char)(Integer.parseInt("$1")))));
但是会出错,系统提示:NumberFormatException:For Input String:"$1"...
请问如何解决?
谢谢了!!!!!
$1表示正则表达式第一个括号中的匹配内容,即([0-9]+)匹配的内容,实际上就是65288、65288等。这不对吗?请指教,谢谢!
代码如下: String MhtUnicode2PlainText(String str)
{
if (str == null){return "";}
try
{
CharArrayWriter buffer = new CharArrayWriter();
for (int i = 0; i < str.length(); i++)
{
if (str.charAt(i) == '&')
{
i++;
if(str.charAt(i)=='#')
{
i++;
String tmp="";
while(str.charAt(i)!=';')
{
tmp+=str.charAt(i);
i++;
}
buffer.write((char)Integer.parseInt(tmp));
}
else
{
buffer.write('&');
buffer.write(str.charAt(i));
}
}
else
{
buffer.write(str.charAt(i));
}
}
return new String(buffer.toCharArray());
}
catch (Exception e)
{
e.printStackTrace();
return "";
}
}请多指教