我正在从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();
}
答案 0 :(得分:3)
<强> 被修改 强>
使用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;
}
如果您只想从字符串中删除所有不可打印的字符,请使用
rawString.replaceAll("[^\\x20-\\x7e]", "")
参考:replace special characters in string in java和How to remove high-ASCII characters from string like ®, ©, ™ in Java
答案 1 :(得分:1)
试试这个:
str = (str == null) ? null :
str.replaceAll("[^\\p{Print}\\p{Space}]", "").trim();