簡體   English   中英

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

[英]What is the better approach to trim unprintable characters from a string

我正在從 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 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;
}

這里這里是完整的解決方案。

如果您只想從字符串中刪除所有不可打印的字符,請使用

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

參考: 替換 java 中字符串中的特殊字符以及如何從 Java 中的字符串中刪除高位 ASCII 字符,如 ®、©、™

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM