提交 c2a4a7a6 编写于 作者: J Jan Peter Stotz 提交者: skylot

fix: "rename to make printable" option was renaming fully printable class names

上级 ff4e3dd9
......@@ -160,6 +160,18 @@ public class NameMapper {
return result;
}
public static String removeNonPrintableCharacters(String name) {
int len = name.length();
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++) {
int codePoint = name.codePointAt(i);
if (isPrintableChar(codePoint)) {
sb.append((char) codePoint);
}
}
return sb.toString();
}
private NameMapper() {
}
}
......@@ -125,23 +125,28 @@ public class RenameVisitor extends AbstractVisitor {
@Nullable
private static String fixClsShortName(JadxArgs args, String clsName) {
char firstChar = clsName.charAt(0);
boolean renameValid = args.isRenameValid();
if (Character.isDigit(firstChar) && renameValid) {
if (renameValid) {
char firstChar = clsName.charAt(0);
if (Character.isDigit(firstChar)) {
return Consts.ANONYMOUS_CLASS_PREFIX + NameMapper.removeInvalidCharsMiddle(clsName);
}
if (firstChar == '$' && renameValid) {
if (firstChar == '$') {
return 'C' + NameMapper.removeInvalidCharsMiddle(clsName);
}
}
String cleanClsName = args.isRenamePrintable()
? NameMapper.removeInvalidChars(clsName, "C")
? NameMapper.removeNonPrintableCharacters(clsName)
: clsName;
if (cleanClsName.isEmpty()) {
return null;
}
if (renameValid && !NameMapper.isValidIdentifier(cleanClsName)) {
if (renameValid) {
cleanClsName = NameMapper.removeInvalidChars(clsName, "C");
if (!NameMapper.isValidIdentifier(cleanClsName)) {
return 'C' + cleanClsName;
}
}
return cleanClsName;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册