为了账号安全,请及时绑定邮箱和手机立即绑定

从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 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信