📄 stringunmarshaller.java
字号:
package com.google.gson;final class StringUnmarshaller { static String unmarshall(String str) { str = str.substring(1, str.length()-1); int len = str.length(); StringBuilder sb = new StringBuilder(len); int i = 0; while (i < len) { char c = str.charAt(i); ++i; if (c == '\\') { char c1 = str.charAt(i); ++i; if (c1 == 'u') { // This is a unicode escape // TODO(inder): Handle the case where code points are of size bigger than 4 int codePoint = getCodePoint(str, i); sb.appendCodePoint(codePoint); i += 4; } else { char escapedChar = getEscapedChar(str, c1); sb.append(escapedChar); } } else { sb.append(c); } } return sb.toString(); } private static int getCodePoint(String str, int i) {// int codePoint = Character.codePointAt(str, i); String s = str.substring(i, i+4); int codePoint = Integer.parseInt(s, 16); return codePoint; } private static char getEscapedChar(String str, char c) { char ch; switch (c) { case 'n': ch = '\n'; break; case 'b': ch = '\b'; break; case 'f': ch = '\f'; break; case 't': ch = '\t'; break; case 'r': ch = '\r'; break; case '\"': ch = '\"'; break; case '\'': ch = '\''; break; case '\\': ch = '\\'; break; case '/': ch = '/'; break; default: throw new IllegalStateException("Unexpected character: " + c + " in " + str); } return ch; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -