第1关:单词分割
任务描述
本关任务:将一段英语字符串进行单词分割。
相关知识
为了完成本关任务,你需要掌握:如何将字符串进行分割。
String.split()拆分字符串
lang
包String
类的split()
方法
publicString[] split(Stringregex) publicString[] split(Stringregex,intlimit) //limit 参数控制模式应用的次数,因此影响所得数组的长度
拆分示例:
publicclassSplitDemo { publicstaticvoidmain(String[] args) { StringStr="Harry James Potter"; String[] StrArray=Str.split("\\s");//"\\s"表示空格//也可以来" "来进行拆分 String[] StrArray=Str.split(" ");for(Stringstr:StrArray){ System.out.println(str); } }
运行结果
Harry
James
Potter
StringTokenizer类拆分字符串
util
包下的StringTokenizer
类
- 拆分原理
StringTokenizer
拆分字符串的原理是通过生成StringTokenizer
对象,然后运用对象的属性来处理字符串拆分的。
publicStringTokenizer(Stringstr,Stringdelim,booleanreturnDelims) publicStringTokenizer(Stringstr,Stringdelim) publicStringTokenizer(Stringstr) //str:要解析的字符串 delim:分隔符 returnDelims:是否将分隔符作为标记返回
拆分示例:
importjava.util.StringTokenizer; publicclassStringTokenDemo { publicstaticvoidmain(String[] args) { StringStr="Harry James Potter"; StringTokenizerstrToken=newStringTokenizer(Str); //当有拆分的子字符串时,输出这个字符串while(strToken.hasMoreTokens()){ System.out.println(strToken.nextToken()); } } }
运行结果
Harry
James
Potter
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 用
String.split()
方法将字符串“aaa|bbb|ccc”以“|”进行拆分,用StringTokenizer
类将字符串“This?is?a?test?string”以“?”
进行拆分。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
测试输入:
aaa|bbb|ccc
This?is?a?test?string
预期输出:
aaa
bbb
ccc
This
is
a
test
string
提示: “|”
、“.”
、“*”
、“+”
、“\\”
等不是有效的模式匹配规则表达式,是转义字符,使用split()
方法时必须得加"\\"
才行。
开始你的任务吧,祝你成功!
代码示例
test.java
packagestep1; importjava.util.List; importjava.util.ArrayList; importjava.util.Scanner; publicclasstest{ publicstaticvoidmain(String[] args){ Scannersc=newScanner(System.in); StudentDemodemo=newStudentDemo(); Stringstr1=sc.nextLine(); Stringstr2=sc.nextLine(); List<String>list1=demo.splitPartition(str1); List<String>list2=demo.tokenPartition(str2); for(Strings:list1){ System.out.println(s); } System.out.println(); for(Strings:list2){ System.out.println(s); } } }
StudentDemo.java
packagestep1; importjava.util.List; importjava.util.ArrayList; importjava.util.StringTokenizer; publicclassStudentDemo { // 使用String.split()方法分割publicList<String>splitPartition(Stringstr) { List<String>list=newArrayList<String>(); //请在此添加实现代码/********** Begin **********/String[] strings=str.split("\\|"); for (Stringstring : strings) { list.add(string); } /********** End **********/returnlist; } // 使用StringTokenizer类进行分割publicList<String>tokenPartition(Stringstr) { List<String>list=newArrayList<String>(); // 请在此添加实现代码/********** Begin **********/StringTokenizerstrings=newStringTokenizer(str, "?"); while (strings.hasMoreTokens()) { list.add(strings.nextToken()); } /********** End **********/returnlist; } }