从java 8中的pojo中删除不可打印的字符

我只想删除项目中字符串字段的不可打印字符,我知道我们可以使用


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;

}

任何人都可以帮我做吗?


这个问题可能是重复的,但我没有找到确切的解决方案。


米琪卡哇伊
浏览 119回答 3
3回答

qq_花开花谢_0

您可以使用反射,这将是有问题的,并且不能保证适用于具有深层结构的字段。或者你可以通过你的代码运行实例:public String removeNonPrintable(Object obj) {&nbsp; &nbsp; return String.valueOf(obj).replaceAll("[^A-Za-z0-9]", "");}注意:String.valueOf()用于避免必须处理objbe null。如果您将转换更改为:replaceAll("[^ -~]", "")这将删除所有不是“常规”ascii 字符的内容(即在十进制 32 和 126 之间)。

哈士奇WWW

以下工作:public static void removeNonPrintable(Node node) throws NoSuchFieldException, IllegalAccessException{&nbsp; &nbsp; &nbsp; &nbsp; Field[] fields = Node.class.getDeclaredFields();&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i<fields.length;i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(fields[i].getType().equals(String.class)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fields[i].set(node, removeNonPrintable(fields[i].get(node).toString()));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(fields[i].get(node));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }class Node{&nbsp; &nbsp; &nbsp;String left;&nbsp; &nbsp; &nbsp;String right;&nbsp; &nbsp; &nbsp;int data;&nbsp; &nbsp; public Node(String left, String right, Integer data){&nbsp; &nbsp; &nbsp; &nbsp; this.left = left;&nbsp; &nbsp; &nbsp; &nbsp; this.right = right;&nbsp; &nbsp; &nbsp; &nbsp; this.data = data;&nbsp; &nbsp; }}它适用于特定的类(例如节点)。我正试图让它工作,Class<T>但它现在给出了一些例外。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java