[英]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.