【发布时间】:2016-01-02 01:53:56
【问题描述】:
我有一个输入字符串,我想删除除特殊字符(十六进制字符)之外的所有字符!像这样:
String SpecialChar = "0123456789ABCDEF" ; // Hex Char
String input = "abdf%$%23%&373D^!Bfg(g)*a" ;
我想得到以下输出,但我得到了错误的值...
String output = "abdf23373DBfgga" ;
我写了下面的方法,但它返回错误的值:
private String EliminateExtra(String str) {
String temp = str.toUpperCase();
for (int i = 0 ; i < temp.length() ; i++) {
char c = temp.charAt(i);
if(!isHexNum(c)) {
temp = temp.replaceAll(String.valueOf(c) , "");
}
}
return temp ;
}
private Boolean isHexNum(char c) {
char[] charArray = "0123456789ABCDEF".toCharArray();
for(int y=0 ; y<charArray.length ; y++) {
if(charArray[y]==c) {
return true ;
}
}
return false ;
}
然后这样称呼它:
String Data = "aaaDffagDDSGw!$!@$3513rX12433r1ADSfX&)&*)%(%8u4w" ;
TextView tv = (TextView) findViewById(R.id.regex_textView1) ;
tv.setText("Original:" + "\n" + Data.toUpperCase() + "\n" + "Result: " + "\n" + EliminateExtra(Data));
【问题讨论】:
-
请注意,当您将不需要的字符更改为“”时,字符串的长度会发生变化,因此您的 for 循环可能会跳过一些字符
-
@hossein 正如 Rafal 所说,您的 for 循环不符合逻辑,因为其中正在修改 temp。我在下面纠正了你的循环。
标签: java android regex string char