当string中存在转义字符的时候,我们可以用下面这个方法把转义去掉。
public static String unescapeJava(String str) throws IOException
{
Writer out = new StringWriter();
if (str != null)
{
int sz = str.length();
StringBuilder unicode = new StringBuilder(4);
boolean hadSlash = false;
boolean inUnicode = false;
for (int i = 0; i < sz; ++i)
{
char ch = str.charAt(i);
if (inUnicode)
{
unicode.append(ch);
if (unicode.length() == 4)
{
try
{
int nfe = Integer.parseInt(unicode.toString(), 16);
out.write((char) nfe);
unicode.setLength(0);
inUnicode = false;
hadSlash = false;
}
catch (NumberFormatException var9)
{
}
}
}
else if (hadSlash)
{
hadSlash = false;
switch (ch)
{
case '\"':
out.write(34);
break;
case '\'':
out.write(39);
break;
case '\\':
out.write(92);
break;
case 'b':
out.write(8);
break;
case 'f':
out.write(12);
break;
case 'n':
out.write(10);
break;
case 'r':
out.write(13);
break;
case 't':
out.write(9);
break;
case 'u':
inUnicode = true;
break;
default:
out.write(ch);
}
}
else if (ch == 92)
{
hadSlash = true;
}
else
{
out.write(ch);
}
}
if (hadSlash)
{
out.write(92);
}
}
return out.toString();
}