有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从字符串中修剪不可打印字符的更好方法是什么

我正在从xml读取数据。当我在eclipse控制台中检查时,我发现我用一些方形框获取了整个数据示例如果excel工作表中有123个,我会得到123个方框。我用trim()来避免这样的事情,但没有成功,因为trim()方法只修剪空白。但我发现这些字符的ASCII值为-17,-20我不想只修剪空白,我还想修剪那些方形框

所以我使用了以下方法来修剪这些角色,并获得了成功

修剪绳子的更合适的方法是什么

修剪一根线

String trimData(String accessNum){
        StringBuffer sb = new StringBuffer();
        try{
            if((accessNum != null) && (accessNum.length()>0)){
//              Log.i("Settings", accessNum+"Access Number length....."+accessNum.length());
                accessNum = accessNum.trim();
                byte[] b = accessNum.getBytes();
                for(int i=0; i<b.length; i++){
                    System.out.println(i+"....."+b[i]);
                    if(b[i]>0){
                        sb.append((char)(b[i]));
                    }
                }
//              Log.i("Settigs", accessNum+"Trimming....");
            }}catch(Exception ex){

            }
            return sb.toString();
    }

共 (2) 个答案

  1. # 1 楼答案

    试试这个:

      str = (str == null) ? null :
         str.replaceAll("[^\\p{Print}\\p{Space}]", "").trim();
    
  2. # 2 楼答案

    编辑

    使用Normalizer(从Java6开始)

    public static final Pattern DIACRITICS_AND_FRIENDS 
            = Pattern.compile("[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+");
    
    
    private static String stripDiacritics(String str) {
            str = Normalizer.normalize(str, Normalizer.Form.NFD);
            str = DIACRITICS_AND_FRIENDS.matcher(str).replaceAll("");
            return str;
    }
    

    herehere是完全解

    如果只想从字符串中删除所有不可打印的字符,请使用

    rawString.replaceAll("[^\\x20-\\x7e]", "")
    

    参考:replace special characters in string in javaHow to remove high-ASCII characters from string like ®, ©, ™ in Java