版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 字符串和正则表达式,本章学习目标,掌握字符串的常用属性及方法 掌握String类和StringBuffer类的使用 了解StringTokenizer类的使用 了解正责表达式的使用 了解Pattern和Matcher类的使用,5.1 字符串常量,Java语言规定字符串常量必须用双引号括起,一个串可以包含字母、数字和各种特殊字符,如+、-、*、/、$等。例如:”You are student.”。当字符串中包含一个字符时,不要把它和字符常量混淆,例如:a是字符常量,而”a”是字符串常量。,实例5-1 字符串常量使用示例,class Exam5_1 public static void m
2、ain(String args) System.out.println(This is constant string!); System.out.println(String+connection.); int i=10; System.out.println(i=+i); ,5.2 String类字符串,String类是Java处理字符串的标准格式,也是表示定长字符串的常用方式。String对象一旦被创建了,就不能被改变。如果需要大量改变字符串的内容,应该考虑使用StringBuffer类或者字符数组,其最终结果可以被转换成String格式。,实例5-2多种方法创建String类对象,cl
3、ass Exam5_2 public static void main(String args) String s1=hello; /使用字符串常量赋值 String s2=new String(); /通过构造方法创建对象再赋值 s2=hello; String s3=new String(hello); /利用构造方法直接赋值 char s =h,e,l,l,o; /利用字符数组型创建字符串 String s4=new String(s); byte b =104,101,108,108,111; /字节数组型的字符串,参数分别是hello每个字母的ASCII码 String s5=new
4、 String(b); System.out.println(s1=+s1); System.out.println(s2=+s2); System.out.println(s3=+s3); System.out.println(s4=+s4); System.out.println(s5=+s5); ,5.2.2 String类字符串的基本操作,String类提供了多种方法,使用这些方法或方法的组合,可方便地实现对字符串的处理,实例5-3 String类常用方法示例,class Exam5_3 public static void main(String args) String s=hel
5、lo; System.out.println (s); System.out.println (this string contains + s.length(); System.out.println (the charracter index 4 is+s.charAt(4); System.out.println (the index of the character e is+s.indexOf(e); System.out.println (the hash code for this string is +s.hashCode(); ,实例5-4 String类求子串示例,clas
6、s Exam5_4 public static void main(String args) String s=hello; System.out.println (s); System.out.println (the substring from index to 1 to index 3 is +s.substring(1,3); System.out.println (the substring from index to 3 to index 3 is +s.substring(3,3); System.out.println (the substring from index to
7、 2 to index 3 is +s.substring(2,3); System.out.println (the substring from index to 0 to index 3 is +s.substring(0,3); System.out.println (the substring from index to 3 to end is +s.substring(3); ,实例5-5 改变字符串大小写,class Exam5_5 public static void main(String args) String s=HeLLo; System.out.println (t
8、he upper case is + s.toUpperCase(); System.out.println (the lower case is + s.toLowerCase(); ,实例5-6 字符串连接示例,class Exam5_6 public static void main(String args) String s1=he; String s2=llo; System.out.println (s1 concat s2 is + s1 +s2); System.out.println (si concat s2 is + s1.concat(s2); ,实例5-7 字符串比较
9、示例,class Exam5_7 public static void main(String args) String s1=aaaa; String s2=aaaa; String s3=AAAA; String s4=bcd; if (s1.equals(s2) System.out.println(s1=s2); else System.out.println(s1!=s2); if (s1.equalsIgnoreCase(s3) System.out.println(s1=s3 when ignoring case); else System.out.println(s1!=s3
10、when ignoring case); if (pareTo(s4)s4);,实例5-8 字符串查找替换示例,classExam5_8 public static void main(String args) String s= hello ; System.out.println (s); System.out.println (the first index of l is + s.indexOf(l); System.out.println (the last index of l is + s.lastIndexOf(l); System.out.println (the strin
11、g after replace is + s.replace(l,L); System.out.println (the string after trim is + s.trim(); ,实例5-9 字符串转换为基本数据类型示例,class Exam5_9 public static void main(String args) String s=1; System.out.println (s); System.out.println (s + 3= +(Integer.parseInt(s)+3); ,实例5-10 基本数据类型转换为字符串示例,class Exam5_10 public
12、 static void main(String args) int i=3; String s=String.valueOf(i); String s1=Integer.toString(i); String s2=i+; System.out.println (s); System.out.println (s1); System.out.println (s2); ,5.3 StringBuffer类字符串,String类是java中最常用的类之一,但它的实例是不可改变的,无论何时,只要一个字符串被改变了,就必须隐含或者显式的创建一个新的String对象来完成它。Java为需要改变的字符
13、串对象提供了一个独立的StringBuffer类。StringBuffer与String类相似,它具有String类的很多功能,甚至更丰富。但是StringBuffer对象可以方便地在缓冲区内被修改,如增加、替换字符或子串,故特别适合于处理可变字符串。当完成了缓冲字符串数据操作后,可以通过调用其方法StringBuffer.toString( )或String构造器把它们有效地转换回标准字符串格式。,5.3.1 StringBuffer类字符串的定义,StringBuffer类提供了四个构造方法,可以使用这四个构造方法创建StringBuffer类的对象。这四个构造方法如下所示: String
14、Buffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。 StringBuffer(CharSequence seq) public java.lang.StringBuilder(CharSequence seq) 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。 StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。 StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。,实例5-11 多种方法创建StringBuffer类对象,c
15、lass Exam5_11 public static void main(String args) StringBuffer s1=new StringBuffer(); StringBuffer s2=new StringBuffer(5); StringBuffer s3=new StringBuffer(hello); s1.append(hello); s2.insert(0,hello); System.out.println (s1=+s1); System.out.println (s2=+s2); System.out.println (s3=+s3); ,5.3.2 Str
16、ingBuffer类字符串的基本操作,在 StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。,实例5-13 替换StringBuffer对象,class Exam5_13 public static void ma
17、in(String args) StringBuffer s=new StringBuffer(java); System.out.println (s=+s); s.setCharAt(2,c); System.out.println (s=+s); s.setCharAt(3,k); System.out.println (s=+s); ,实例5-14 StringBuffer对象其它常用方法,class Exam5_14 public static void main(String args) StringBuffer s=new StringBuffer(i love java!);
18、System.out.println (s=+s); s.insert(2,really ); System.out.println (s=+s); s.replace(9,13,like); System.out.println (s=+s); s.delete(2,9); System.out.println (s=+s); s.deleteCharAt(11); System.out.println (s=+s); s.setLength(6); System.out.println (s=+s); s.reverse(); System.out.println (s=+s); ,5.4
19、 main()方法的参数,所谓命令行参数,是指执行某个Java应用程序时,从命令行中向程序直接传送的参数。命令行参数是命令后的参数,它不包括命令本身;另外,命令行参数都是字符串。我们可以获得这些参数的值,并运用到程序的执行过程中。Java通过main方法中的参数从命令行中接收参数。main()方法的参数String args是用来接受命令行参数的字符串数组。在程序内部,通过args0、args1的形式,可以访问这些参数字符串,通过args.length可以获得命令行参数的个数。,实例5-15从命令行中输入若干数字字符串,求输入数字串的个数,并求它们的和,public class Exam5_1
20、5 public static void main(String args) if (args.length1) System.out.println(至少需要有一个参数!); System. exit(0);/终止程序运行 int i=0,sum=0; int n=args.length; int arr=new intn; for(i=0;in;i+) System.out.println(参数args+i+是:+argsi); arri=Integer.parseInt(argsi);/将字符串转换成int型 sum+=arri; System.out.println(参数个数:+arr
21、.length); System.out.println(参数的和:+sum); ,5.5 StringTokenizer类,Java语言中,提供了专门用来分析字符串的类StringTokenizer(位于java.util包中)。该类可以将字符串分解为独立使用的单词,并称之为语言符号。语言符号之间由定界符(delim)或者是空格、制表符、换行符等典型的空白字符来分隔。其他的字符也同样可以设定为定界符。,实例5-16 StringTokenizer示例,import java.util.*; class Exam5_16 public static void main(String args)
22、 String str1 = Hello world!This is Java code,stringTokenizer Demo.; String str2 = How to use StringTokenizer?StringTokenizer?; StringTokenizer strT1 = new StringTokenizer(str1, ,.!); StringTokenizer strT2 = new StringTokenizer(str2, ?); int num1 = strT1.countTokens(); int num2 = strT2.countTokens();
23、 System.out.println(str1 has +num1+ words.They are:); while(strT1.hasMoreTokens() String str = strT1.nextToken(); System.out.print(+str+ ); System.out.println(nstr2 has +num2+ words.They are:); while(strT2.hasMoreTokens() String str = strT2.nextToken(); System.out.print(+str+ ); ,5.6 正则表达式,正则表达式是一种强
24、大而灵活的文本处理工具,用来指定字符串模式。当你需要定位匹配某种模式的字符串时就可以使用正则表达式。在技术上,正则表达式一般和I/O联合使用,实现了对字符串的操作,在先前,这些任务一般都指派给了JAVA中的String、StringBuffer和StringTokenizer这些类;正则表达式提供了一种紧凑的、动态的语言,能够以一种完全通用的方式来解决各种字符串处理(例如:匹配、选择、编辑及验证)问题,可以让我们以编程方式指定那些可以在输入字符串中发现的复杂的文本模式,一旦我们发现了这些模式,那么就可以按照任何我们所希望的方式进行处理了。,5.6.1 正则表达式,要想写好正则表达式,必须先了解
25、正则表达式的语法。 1、字符类是可选自符的集合,用封装,比如Jj,0-9,A-Za-z或0-9。这里的-表示范围,表示求补。 2、有许多预定以的字符类,像d(数字)或pSc。 3、大多数字符与它们自身匹配。 4、符号.匹配任何字符,可能行终止符(line terminators)除外,这依赖于标识设置(flag settings)。 5、用作转义符,比如.匹配一个句点,匹配一个反斜杠。 6、和$分别匹配行头和行尾 。 7、如果X和Y都是正则表达式,则XY表示“X的匹配后面跟着Y的匹配”。X|Y表示“任何X或Y的匹配” 。 8、可以将量词(quantifier)用到表达式中,X+ 表示X重复1次或多次,X* 表示X重复0次或多次,X? 表示X重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《老年青光眼专科护理|眼压管理 + 全套护理措施》
- 礼仪服务公司宣传片拍摄脚本
- 《疟疾专科护理|寒战管理 + 全套护理措施》
- 湖南衡阳高新区2025届数学三年级第一学期期中综合测试模拟试题(含答案)
- 湖南省长沙市开福区2025年数学四年级第二学期期末考试试题含答案解析
- 厚积薄发夏日花开小学三年级主题班会课件
- 团队协作大挑战:我们的教室小学主题班会课件
- 市场营销策略执行要点指导书
- 制造业成本控制与预算编制指南
- 办公流程标准化提高生产力方案
- 2025-2030中国智慧农业技术推广障碍与农户采纳意愿分析报告
- 上海曹杨二中2026年高一生物第二学期期末学业质量监测试题含解析
- 2026年上海市长宁区社区工作者考试题库及答案
- 2023-2024学年北京市丰台区四年级(下)期末语文试卷
- 建国后中医院校中西医结合教育的发展历程、现状与展望:传承与创新之路
- 2026年四川高考物理卷及答案
- (2025年)广电集团(电视台)工程技术类岗位笔试题及答案
- 造林管护合同模板(3篇)
- 贵州国企招聘:2026贵州贵阳花溪智联数智科技服务有限公司招聘9人参考题库附答案
- 国家开放大学《理工英语1》期末考试精准题库
- 关于压疮护理毕业论文
评论
0/150
提交评论