Java 是否从字符串中删除所有不带specefic字符的字符?
我有一个输入字符串,我想删除除特殊字符(十六进制字符)以外的所有字符!像这样:Java 是否从字符串中删除所有不带specefic字符的字符?,java,android,regex,string,char,Java,Android,Regex,String,Char,我有一个输入字符串,我想删除除特殊字符(十六进制字符)以外的所有字符!像这样: String SpecialChar = "0123456789ABCDEF" ; // Hex Char String input = "abdf%$%23%&373D^!Bfg(g)*a" ; 我想有下面的输出,但我得到了错误的值 String output = "abdf23373DBfgga" ; 我写了下面的方法,但它返回了错误的值: private String Elimi
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 ;
}
你可以简单地使用
private String EliminateExtra(String str) {
return str.replaceAll("[^a-fA-F0-9]","");
}
replaceAll
使用正则表达式查找匹配项并将其替换为其他内容。在这种情况下,它将尝试查找所有不在[^…]
中描述的范围内的字符,并用空字符串替换它们(这意味着它将删除它们)。在循环中for(int i=0;i
您正在修改“temp”,这将导致循环无法正常工作。我将你的for循环更改为
private static String EliminateExtra(String str) {
String temp = str.toUpperCase();
String result = new String(); // create result string
for (int i = 0 ; i < temp.length() ; i++) {
char c = temp.charAt(i);
if(isHexNum(c)) {
result += String.valueOf(c); // add valid char into your result string
}
}
return result ;
}
private静态字符串消除器extra(String str){
字符串temp=str.toUpperCase();
字符串结果=新字符串();//创建结果字符串
对于(int i=0;i
请注意,当您将不需要的字符更改为“”时,字符串的长度正在更改,因此for循环可能会跳过一些字符chars@hossein正如Rafal所说,您的for循环不符合逻辑,因为其中的temp正在被修改。我在下面更正了您的循环。@Pshemo,我不是堆栈溢出的新手,我忘记接受它了!
private static String EliminateExtra(String str) {
String temp = str.toUpperCase();
String result = new String(); // create result string
for (int i = 0 ; i < temp.length() ; i++) {
char c = temp.charAt(i);
if(isHexNum(c)) {
result += String.valueOf(c); // add valid char into your result string
}
}
return result ;
}