这道题目为记忆版本:
题目2描述:
编写一个算法,过滤掉数组中的非法字符,最终只剩下正式字符。
示例:输入数组:“!¥@&HuaWei*&%123”
调用函数后的输出结果,数组:“HuaWei123”。
函数声明:
public static void getFormatString(String s)
代码实现如下:
1 import java.util.ArrayList; 2 3 public class HuaWeiTest { 4 5 public static void main(String[] args){ 6 String str="!&@$HuaWei*&%123"; 7 HuaWeiTest test=new HuaWeiTest(); 8 test.getFormatString(str); 9 System.out.println("过滤后的字符串是:"+test.getFormatString(str)); 10 } 11 public static String getFormatString(String s){ 12 //ArrayList<char> list=new ArrayList<String>(); 13 //把String类型的数组转换成char类型的数组,方便比较字符值的大小。 14 String ret=""; 15 char[] ch=s.toCharArray(); //把字符型变量转换成字符串。 16 for(int i=0;i<ch.length;i++){ 17 if(('a'<=ch[i]&&ch[i]<='z')||('A'<=ch[i]&&ch[i]<='Z')||('0'<=ch[i]&&ch[i]<'9')) 18 ret+=ch[i]; 19 } 20 return ret; 21 22 } 23 }
TT要学的就是:
(1)String类型的变量要转换成char类型的,不然是没法比较ASCII码值。在此,我专门查了一下,为什么要把String类型的变量转换成char类型的?
记住:char[] ch=s.toCharArray();把String类型的变量转变成char类型的变量。
Ans:
(2)还有就是不能直接'a'<=ch[i]<='z',而要分开写:'a'<=ch[i]&&ch[i]<='z'? 因为'<='是二元运算符,这是语法。。