常见的一道面试题:把某某符号(“,”或 “#”)分隔的字符串转换成一个数组。
思路有两个:
(1)使用split()函数
(2)StringTokenizer
举例:一个字符串str用逗号分隔为:“aa,bb,cc,dd,ee,ff,gg” 要求将其转换成数组
代码:
import java.util.StringTokenizer;
public class Test3{
public static void main(String[] args){
String str="aa,bb,cc,dd,ee,ff,gg";
String[] strArray1=null;
System.out.println("----Method1: use split----"); //使用split()函数
strArray1= str.split(",");
// System.out.println("----Method2: use StringTokenizer----"); //使用StringTokenizer
// StringTokenizer st = new StringTokenizer(str,",");
// String[] strArray1 = new String[st.countTokens()];
// int a =0;
// while(st.hasMoreTokens()){
// strArray1[a++]=st.nextToken();
// }
//将结果打印出来
for(int i=0;i<strArray1.length;i++){
System.out.print(strArray1[i]);
if(i==strArray1.length-1){
System.out.print("\n");
}else{
System.out.print(",");
}
}
}
}
面试中一般会提问用“,”逗号分隔的简单情况,但是也要想到,如果有两种符号分隔,那么在使用split()函数时,就需要用一个for循环,而StringTokenizer则不需要。
另外要注意:StringTokenizer这个类是出于兼容性原因而被保留的遗留类,新代码中并不鼓励使用它。
实际中的情境举例:如初期的高校云平台中评教部分,学生评教时会记录每个评分项的id和该项学生评的分数,实现时使用JavaScript将参数加到url中继续传递。
字符串的样式为:项目a的ID,a的分数#项目b的ID,b的分数#项目c的ID,c的分数
在后面写具体代码的时候,也会选择将参数转化为数组。在初期评教中,使用了split()函数进行了转换。