mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-03 18:44:46 +00:00
Added #1496 repeat escape sequence \{xx}C to avoid long same char strings/names
This commit is contained in:
@@ -241,6 +241,54 @@ public class Helper {
|
||||
return ret.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Escapes string by adding backslashes
|
||||
*
|
||||
* @param s String to escape
|
||||
* @return Escaped string
|
||||
*/
|
||||
public static String escapePCodeString(String s) {
|
||||
StringBuilder ret = new StringBuilder(s.length());
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
if (c == '\n') {
|
||||
ret.append("\\n");
|
||||
} else if (c == '\r') {
|
||||
ret.append("\\r");
|
||||
} else if (c == '\t') {
|
||||
ret.append("\\t");
|
||||
} else if (c == '\b') {
|
||||
ret.append("\\b");
|
||||
} else if (c == '\f') {
|
||||
ret.append("\\f");
|
||||
} else if (c == '\\') {
|
||||
ret.append("\\\\");
|
||||
} else if (c == '"') {
|
||||
ret.append("\\\"");
|
||||
} else if (c == '\'') {
|
||||
ret.append("\\'");
|
||||
} else if (c < 32) {
|
||||
ret.append("\\x").append(byteToHex((byte) c));
|
||||
} else {
|
||||
int num = 1;
|
||||
for (int j = i + 1; j < s.length(); j++) {
|
||||
if (s.charAt(j) == c) {
|
||||
num++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (num > Configuration.limitSameChars.get()) {
|
||||
ret.append("\\{").append(num).append("}");
|
||||
i += num - 1;
|
||||
}
|
||||
ret.append(c);
|
||||
}
|
||||
}
|
||||
|
||||
return ret.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Escapes string by adding backslashes
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user