mirror of
https://github.com/revanced/Apktool.git
synced 2025-01-07 10:35:52 +01:00
AndrolibResources.escapeForResXml(): proper escaping of whitespaces.
This commit is contained in:
parent
07ad2a1a36
commit
2aec8cbcbb
@ -312,14 +312,51 @@ final public class AndrolibResources {
|
|||||||
if (value.isEmpty()) {
|
if (value.isEmpty()) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
value = value.replace("'", "\\'");
|
|
||||||
value = value.replace("\"", "\\\"");
|
StringBuilder out = new StringBuilder(value.length() + 10);
|
||||||
value = value.replace("\n", "\\n");
|
char[] chars = value.toCharArray();
|
||||||
char c = value.charAt(0);
|
|
||||||
if (c == '@' || c == '#' || c == '?') {
|
switch (chars[0]) {
|
||||||
return '\\' + value;
|
case '@':
|
||||||
|
case '#':
|
||||||
|
case '?':
|
||||||
|
out.append('\\');
|
||||||
}
|
}
|
||||||
return value;
|
|
||||||
|
boolean space = true;
|
||||||
|
for (int i = 0; i < chars.length; i++) {
|
||||||
|
char c = chars[i];
|
||||||
|
|
||||||
|
if (c == ' ') {
|
||||||
|
if (space) {
|
||||||
|
out.append("\\u0020");
|
||||||
|
} else {
|
||||||
|
out.append(c);
|
||||||
|
space = true;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
space = false;
|
||||||
|
switch (c) {
|
||||||
|
case '\\':
|
||||||
|
case '\'':
|
||||||
|
case '"':
|
||||||
|
out.append('\\');
|
||||||
|
break;
|
||||||
|
case '\n':
|
||||||
|
out.append("\\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
out.append(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (space) {
|
||||||
|
out.deleteCharAt(out.length() - 1);
|
||||||
|
out.append("\\u0020");
|
||||||
|
}
|
||||||
|
|
||||||
|
return out.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private final static Logger LOGGER =
|
private final static Logger LOGGER =
|
||||||
|
Loading…
Reference in New Issue
Block a user