【问题标题】:What is the better approach to trim unprintable characters from a string从字符串中修剪不可打印字符的更好方法是什么
【发布时间】:2011-07-21 06:41:38
【问题描述】:

我正在从 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();
    }

【问题讨论】:

    标签: java android


    【解决方案1】:

    已编辑

    使用 Normalizer(从 java 6 开始)

    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

    【讨论】:

    • 我不想修剪牙套。它的方形盒子不是大括号
    • 方盒?您是指不可打印的字符吗?
    【解决方案2】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      相关资源
      最近更新 更多