亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從java 8中的pojo中刪除不可打印的字符

從java 8中的pojo中刪除不可打印的字符

米琪卡哇伊 2021-09-12 19:50:47
我只想刪除項目中字符串字段的不可打印字符,我知道我們可以使用public String removeNonPrintable(String field) {    return field.replaceAll("[^A-Za-z0-9]", "");}從字符串中刪除不可打印的字符。但我想要通用方法,如:public <T> T removeNonPrintable(Class<T> myClassObject) {    /// Get only the string and remove non-printable code stuffs    return removedNonPrintableCharactersmyClassObject;}任何人都可以幫我做嗎?這個問題可能是重復的,但我沒有找到確切的解決方案。
查看完整描述

3 回答

?
qq_花開花謝_0

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 之間)。


查看完整回答
反對 回復 2021-09-12
?
哈士奇WWW

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>但它現在給出了一些例外。


查看完整回答
反對 回復 2021-09-12
  • 3 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號