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>但它現在給出了一些例外。
添加回答
舉報