3 回答
TA贡献1835条经验 获得超7个赞
您可以使用反射,这将是有问题的,并且不能保证适用于具有深层结构的字段。
或者你可以通过你的代码运行实例:
public String removeNonPrintable(Object obj) {
return String.valueOf(obj).replaceAll("[^A-Za-z0-9]", "");
}
注意:String.valueOf()用于避免必须处理objbe null。
如果您将转换更改为:
replaceAll("[^ -~]", "")
这将删除所有不是“常规”ascii 字符的内容(即在十进制 32 和 126 之间)。
TA贡献1799条经验 获得超6个赞
以下工作:
public static void removeNonPrintable(Node node) throws NoSuchFieldException, IllegalAccessException{
Field[] fields = Node.class.getDeclaredFields();
for(int i=0;i<fields.length;i++){
if(fields[i].getType().equals(String.class)) {
fields[i].set(node, removeNonPrintable(fields[i].get(node).toString()));
System.out.println(fields[i].get(node));
}
}
}
class Node{
String left;
String right;
int data;
public Node(String left, String right, Integer data){
this.left = left;
this.right = right;
this.data = data;
}
}
它适用于特定的类(例如节点)。我正试图让它工作,Class<T>但它现在给出了一些例外。
添加回答
举报