Java语言程序的设计实用程第八讲字符串处理

上传人:仙*** 文档编号:48591918 上传时间:2022-01-12 格式:PPT 页数:56 大小:251KB
收藏 版权申诉 举报 下载
Java语言程序的设计实用程第八讲字符串处理_第1页
第1页 / 共56页
Java语言程序的设计实用程第八讲字符串处理_第2页
第2页 / 共56页
Java语言程序的设计实用程第八讲字符串处理_第3页
第3页 / 共56页
资源描述:

《Java语言程序的设计实用程第八讲字符串处理》由会员分享,可在线阅读,更多相关《Java语言程序的设计实用程第八讲字符串处理(56页珍藏版)》请在装配图网上搜索。

1、SISEJava语言程序设计实用教程Java语言程序设计实用教程SISEJava语言程序设计实用教程第八讲 字符串处理SISEJava语言程序设计实用教程3本章学习要点:lString类字符串的定义及其基本操作 lStringBuffer类字符串的定义及其基本操作 SISEJava语言程序设计实用教程字符串 l 字符串是字符的序列,它是组织字符的基本数据结构,从某种程度上来说有些类似于字符的数组。在Java中,字符串被当作对象对象来处理。l 程序中需要用到的字符串可以分为两大类, 一类是创建之后不会再做修改和变动创建之后不会再做修改和变动的字符串常量String类; 另一类是创建之后允许再做更

2、改和变化创建之后允许再做更改和变化的字符串变量StringBuffer类。SISEJava语言程序设计实用教程8.1 String类SISEJava语言程序设计实用教程字符串常量 l 使用“”定义字符串,使用定义字符。l “abc”,”欢迎使用Java”都是字符串。l a,b,c都是字符。l 注意:字符串对象是用双引号括起来的字符序列,字符串对象是用双引号括起来的字符序列,但字符串的内容并不包括双引号但字符串的内容并不包括双引号。l Java会自动为字符串常量生成一个String类的对象,所以可以直接初始化String对象,如:String s = “Hello world!”SISEJava

3、语言程序设计实用教程String常用的构造方法(P176,表8-1)l String():实例化一个空字符串1. String(byte bytes) 使用当前平台的默认字符集从字节数组构造一个字符串 2. String(byte bytes, int offset, int length) 使用当前平台的默认字符集从字节数组的一部分构造一个字符串3. String(char value) 使用字符数组构造一个字符串4. String(char value, int offset, int count) 使用字符数组的一部分构造一个字符串5. String(String original) 根

4、据一个字符串新建一个字符串(复制字符串) 6. String(StringBuffer buffer) 从一个字符串缓冲对象构造一个字符串SISEJava语言程序设计实用教程练习 输入以下代码,看是什么输出结果:输入以下代码,看是什么输出结果: char chars=a,b,c,d,e,f; String str=new String(chars,1,4); System.out.println(str); byte ascii=65,66,67,68,69,70; String s=new String(ascii,2,3); System.out.println(s);SISEJava语言

5、程序设计实用教程练习提示 l int占4个字节,byte是1个字节,每个字节8位。JAVA中byte范围是-128127。l az对应的ASCII码数为97123。l AZ对应的ASCII码数为6591。SISEJava语言程序设计实用教程String类的方法及其应用(表8-2至表8-7)l 返回字符串长度 l 连接字符串l 拷贝字符串 l 比较字符串l 搜索字符 l 搜索子串 l 修改字符串SISEJava语言程序设计实用教程返回字符串长度length() :返回字符串的长度,其类型是int例如: String s1= new String(“a string”); System.out.p

6、rintln(s.length();SISEJava语言程序设计实用教程连接字符串l “+”运算符 l concat()SISEJava语言程序设计实用教程“+”运算符l用用“+”+”运算符连接的是两个字符串常量,在进行运算符连接的是两个字符串常量,在进行+ +运算时可以在运算时可以在StringString对象的尾部追加对象。对象的尾部追加对象。l此外运算符可以使一个串与一个数值量进行连接。此外运算符可以使一个串与一个数值量进行连接。在连接时,当两个以上的数值量要进行算术运算时,在连接时,当两个以上的数值量要进行算术运算时,必须用()括起来,否则按字符串进行处理。必须用()括起来,否则按字符

7、串进行处理。String s1,s2;s1=+12+12;s2=+(12+12);System.out.println(s1);System.out.println(s2); String s1=new String(“aaa”);String s1=new String(“bbb”);s1=s1+s2;System.out.println(“s1+s2=”+s1);输出结果为输出结果为s1+s2=aaabbbSISEJava语言程序设计实用教程concat()方法用concat()可将两个字符串连接起来。格式: str1.concat(String str2)将str2连在str1的后面。S

8、ISEJava语言程序设计实用教程拷贝字符串l copyValueOf() l getChars() l toCharArray() l substring() l valueOf()SISEJava语言程序设计实用教程copyValueOf()方法lcopyValueOf()方法可将一个字符数组的全部或部分内容拷贝到一个String对象中q格式一:格式一:String str.copyValueOf(char data)String str.copyValueOf(char data)q格式二:格式二:String str.copyValueOf(char data,int offset,i

9、nt count)String str.copyValueOf(char data,int offset,int count)qoffset指定数组部分元素的起始偏移量;qcount为数组部分元素的长度 SISEJava语言程序设计实用教程getChars()方法lgetChars()方法可将一个方法可将一个String对象的全部或部分内对象的全部或部分内容拷贝到一个字符数组中,格式如下:容拷贝到一个字符数组中,格式如下:src.getChars(int srcBegin,int srcEnd,char dst,int dstBegin)l参数说明:参数说明: SrcBegin String的

10、起始下标的起始下标 SrcEnd String的结束下标的结束下标 dst 数组名数组名 dstBegin 数组的起始下标数组的起始下标SISEJava语言程序设计实用教程SISEJava语言程序设计实用教程toCharArray()方法(P177例子)ltoCharArray()方法可将一个String对象的全部内容拷贝到一个字符数组中。它相当于分配一个新数组,长度为String的长度,内容为String对象所表示字符串序列。新数组必须先定义。l 引用格式如下: str.toCharArray()SISEJava语言程序设计实用教程substring()方法lsubstring()subst

11、ring()方法可将一个方法可将一个Str1Str1对象的全部或部分内容拷贝到对象的全部或部分内容拷贝到一个一个str2str2串中。引用格式如下:串中。引用格式如下:q 格式一:格式一:String str.substring(int beginIndex)String str.substring(int beginIndex)q 该方法将从该方法将从str1str1串的下标串的下标beginIndexbeginIndex到到str2str2串尾之间的内容串尾之间的内容拷贝到拷贝到str2str2串中串中q 格式二:格式二:q String str.substring(int beginIn

12、dex,int endIndex)String str.substring(int beginIndex,int endIndex)q 该方法将从该方法将从str1str1串的下标串的下标beginIndexbeginIndex到下标到下标endIndex-1endIndex-1之之间的内容拷贝到间的内容拷贝到str2str2串中串中SISEJava语言程序设计实用教程字符串类与其他类型的转换lstatic String valueOf(char data)static String valueOf(char data)lstatic String valueOf(char data,int

13、offset,int count)static String valueOf(char data,int offset,int count)lstatic String valueOf(boolean b)static String valueOf(boolean b)lstatic String valueOf(char c)static String valueOf(char c)lstatic String valueOf(int i) static String valueOf(int i) lstatic String valueOf(long l)static String val

14、ueOf(long l)lstatic String valueOf(float f)static String valueOf(float f)lstatic String valueOf(double d)static String valueOf(double d)ltoString()toString()SISEJava语言程序设计实用教程比较字符串l equals() l equalsIgnoreCase() l regionMatches() l compareTo() SISEJava语言程序设计实用教程equals()方法lequals()方法实现两串(大小写一致)的比较,返回

15、值为boolean类型。若相等则返回true,否则返回falsel格式如下: str1.equals(String str2)SISEJava语言程序设计实用教程equalsIgnoreCase()方法lequalsIgnoreCase()方法实现两串(大小写一致)的比较,返回值为boolean类型。若相等则返回true,否则返回falsel格式如下: str1.equalsIgnoreCase (String str2)SISEJava语言程序设计实用教程SISEJava语言程序设计实用教程regionMatches()方法lregionMatches()regionMatches()方法实

16、现子串匹配相等的比较,返回值为方法实现子串匹配相等的比较,返回值为booleanboolean类型。若相等则返回类型。若相等则返回truetrue,否则返回,否则返回falsefalse。格式如下:格式如下:lString str1. regionMatches(boolean ignoreCase,int String str1. regionMatches(boolean ignoreCase,int offset,String str2,int offset,int len)offset,String str2,int offset,int len)l参数说明:参数说明:qboolean

17、 ignoreCase boolean ignoreCase 若为若为truetrue,则忽略大小写,则忽略大小写qint offsetint offset 确定确定str1str1的起始偏移量的起始偏移量qString str2String str2 str2 str2为参与比较的另一个串为参与比较的另一个串qint offsetint offset 确定确定str2str2的起始偏移量的起始偏移量qint len 确定子串长度确定子串长度SISEJava语言程序设计实用教程compareTo()方法lcompareTo()compareTo()方法实现两串按字典顺序比较大小。该方法返回一个

18、方法实现两串按字典顺序比较大小。该方法返回一个intint值。值。比较的依据是字符串中的各个字符的比较的依据是字符串中的各个字符的UnicodeUnicode值值lUnicodeUnicode(统一码、万国码、单一码):相对于(统一码、万国码、单一码):相对于ASCIIASCII,UnicodeUnicode为双为双字节长的字符集,到目前已定义了世界上绝大多数文字的常用字,字节长的字符集,到目前已定义了世界上绝大多数文字的常用字,ASCIIASCII字符集是它的子集,即字符集是它的子集,即UnicodeUnicode字符集兼容字符集兼容ASCIIASCII字符集。字符集。q 若返回为若返回为0

19、 0,则两串相等,则两串相等q 若返回为正数,则若返回为正数,则str1str1大于大于str2str2q 若返回为负数,则若返回为负数,则str1str1小于小于str2str2q 格式如下:格式如下:pareTo(String str2); SISEJava语言程序设计实用教程compareTo示例public static void main(String args) String s1 = a; String s2 = A; System.out.println(pareTo(s2); /运行结果 32 A的ASCII码为:65 a的ASCII码为:97 SISEJava语言程序设计实

20、用教程字符串字符串/* 字符串的排序,可以使用字符串的排序,可以使用String的的compareTo方法。方法。 如果返回负值,那么该串比如果返回负值,那么该串比参数中的串要小;参数中的串要小; 如果为正数,该串比参数中的串要大;如果为正数,该串比参数中的串要大; 若为若为0,则表示两串,则表示两串相等。相等。*/class SortString static String arr =Now,is,the,all; public static void main(String args ) for (int j=0;jarr.length;j+) for (int i=j+1;iarr.le

21、ngth;i+) if (pareTo(arrj)0) String t=arrj; arrj=arri; arri=t; System.out.println(arrj); SISEJava语言程序设计实用教程程序的输出结果程序的输出结果Nowallisthe 从这个例子的结果可以看出,从这个例子的结果可以看出,compareTo区分字母的区分字母的大小写。词大小写。词Now排在最前是因为它以大写字母开始,在排在最前是因为它以大写字母开始,在字符集中大写字母字符集中大写字母AZ排在前,小写字母排在前,小写字母az排在后。排排在后。排在前面的字符对应的值小,排在后面的字符对应的值大在前面的字符

22、对应的值小,排在后面的字符对应的值大SISEJava语言程序设计实用教程例8-1,P179的说明l JOptionPane中的showMessageDialog方法,需要import javax.swing.JOptionPanel JOptionPane.showMessageDialog(出现位置, 显示字串,对话框标题,对话框类型); l 若出现位置是若出现位置是null,表示在屏幕中央,表示在屏幕中央。l 对话框类型有:JOptionPane.ERROR_MESSAGE, JOptionPane.INFORMATION_MESSAGE, JOptionPane.WARNING_MESS

23、AGE, JOptionPane.QUESTION_MESSAGE, JOptionPane.PLAIN_MESSAGE SISEJava语言程序设计实用教程例8-1,P179的说明SISEJava语言程序设计实用教程搜索字符l charAt(int index) l indexOf(int ch) l indexOf(int ch,int fromIndex) l lastindexOf(int ch) l lastindexOf(int ch,int fromIndex)SISEJava语言程序设计实用教程charAt(int index)l指定串中某字符的下标位置,返回下标所对应的字符字

24、符。格式如下:str.charAt(int index)SISEJava语言程序设计实用教程indexOf(int ch)与indexOf(int ch,int fromIndex)lindexOf(int ch)检索某个字符第一次出现的位置;若未检索到则返回-1。检索顺序由前到后搜索。格式如下: str.indexOf(int ch)lindexOf(int ch,int fromIndex)从串下标fromIndex开始,检索某个字符第一次出现的位置;若未检索到则返回-1。检索顺序从下标fromIndex开始向前搜索。格式如下: str. indexOf(int ch,int fromIn

25、dex)SISEJava语言程序设计实用教程lastindexOf(int ch)l检索某个字符最后一次出现的位置。若未检索到则返回-1。检索顺序由后到前。l格式如下: str.lastindexOf(int ch)SISEJava语言程序设计实用教程lastindexOf(int ch,int fromIndex)l从串下标fromIndex开始,检索某个字符最后一次出现的位置;若未检索到则返回-1。检索顺序从下标fromIndex开始向前搜索。l格式如下: str.lastindexOf(int ch,int fromIndex)SISEJava语言程序设计实用教程搜索子串l indexO

26、f(String str) l indexOf(String str,int fromIndex) l lastindexOf(String str) SISEJava语言程序设计实用教程indexOf(String str) l从某字符串str1中检索是否包含子串str2。若检索到则返回第一个子串的第一个字符下标;若未检索到则返回-1。检索顺序由前到后。l格式如下:str1.indexOf(String str2)SISEJava语言程序设计实用教程indexOf(String str,int fromIndex)l从某字符串str1中检索是否包含有子串str2。若检索到则返回第一个子串的第

27、一个字符的下标;若未检索到则返回-1。检索顺序从下标fromIndex开始向后搜索。l格式如下: str1.indexOf(String str2,int fromIndex)SISEJava语言程序设计实用教程lastindexOf(String str) l从某字符串str1中检索是否包含有一些子串str2。若检索到则返回第一个子串的第一个字符的下标;若未检索到则返回-1。检索顺序由后到前。l格式如下:str1.lastindexOf(String str2)SISEJava语言程序设计实用教程修改字符串l replace () l toLowerCase() l toUpperCase(

28、) l trim () SISEJava语言程序设计实用教程replace()方法q该方法用新字符newChar替换所有旧字符oldChar。若指定的若指定的oldCharoldChar字符未出现在字符串中,则不替换字符未出现在字符串中,则不替换。q格式如下:qstr.replace(char oldChar,char newChar)SISEJava语言程序设计实用教程toLowerCase()方法q该方法将一个String对象中的所有大写字母转换为小写q格式如下:q str.toLowerCase() SISEJava语言程序设计实用教程toUpperCase()q该方法将一个String

29、对象中的所有小写字母转换为大写。q格式如下:qString str.toUpperCase()SISEJava语言程序设计实用教程trim()方法q该方法删除String串中的首尾空格q格式如下:qString str.trim() SISEJava语言程序设计实用教程q例:例:String类的常用方法示例。类的常用方法示例。qpublic class StringDemo2q public static void main(String args )q String s= Hello ;q System.out.println(s=+s);q/ / 将将 s 中 的 所 有 大 写 字 母

30、转 变 为 小 写中 的 所 有 大 写 字 母 转 变 为 小 写 System.out.println(s.toLowerCase()=+s.toLowerCase(); / 将将s中的所有小写字母转变为大写中的所有小写字母转变为大写 System.out.println(s.toUpperCase()=+s.toUpperCase(); / 去掉前后空格去掉前后空格q System.out.println(s.trim()=+s.trim(); q/ / 取 子 串取 子 串 ( 从 指 定 的 开 始 位 置 到 最 后从 指 定 的 开 始 位 置 到 最 后 ) System.ou

31、t.println(s.substring(5)=+s.substring(5); / 取子串取子串(从指从指定 的 开 始 位 置 到 指 定 的 结 束 位 置定 的 开 始 位 置 到 指 定 的 结 束 位 置 , 但 不 包 括 结 束 位 置但 不 包 括 结 束 位 置 ) System.out.println(s.substring(3,5)=+s.substring(3,5); q / 将将s中所有的中所有的l替换为替换为t以生成新串以生成新串 q String news=s.replace(l,t); q System.out.println(replace all l w

32、ith t: +news);q qSISEJava语言程序设计实用教程8.2 StringBuffer类SISEJava语言程序设计实用教程StringBuffer类 l StringString类用来表示那些创建后就不会再改变的字符类用来表示那些创建后就不会再改变的字符串串, ,l 而而StringBuffer StringBuffer 类用来表示内容可变的字符串,并类用来表示内容可变的字符串,并提供了修改底层字符串的方法。提供了修改底层字符串的方法。l 当当StringString对象的内容需要变化时,则系统需要花费对象的内容需要变化时,则系统需要花费较多的时间进行转化。使用较多的时间进行

33、转化。使用StringBufferStringBuffer的版本的的版本的方法比使用方法比使用StringString版本的一般都快十倍以上。如果版本的一般都快十倍以上。如果你对字符串中的内容经常进行操作,特别是内容要你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用修改时,那么使用StringBufferStringBuffer,如果最后需要,如果最后需要StringString,那么使用,那么使用StringBufferStringBuffer的的toString()toString()方法方法好了!也许这就是你的程序的性能瓶颈好了!也许这就是你的程序的性能瓶颈 SISEJava

34、语言程序设计实用教程构造方法 l StringBuffer()l StringBuffer(int len)l StringBuffer(String str)SISEJava语言程序设计实用教程StringBuffer的基本操作1(1)分配/获取字符串的长度 void setLength(int newLength) int length()(2)分配/获取字符串的容量 void ensureCapacity(int minCapacity) int capacity()(3)字符串的检索和子串 void getChars(int srcBegin,int srcEnd,char dst,i

35、nt dstBegin) String substring(int beginindex)和 String substring(int beginindex,int endindex)SISEJava语言程序设计实用教程StringBuffer的基本操作2(4)字符串的修改 StringBuffer append() StringBuffer insert() StringBuffer delete(int starts,int end) StringBuffer deleteCharAt(int index) StringBuffer reverse() StringBuffer repla

36、ce(int starts,int end,String str) void setCharAt(int index,char c)(5)字符串类型转换 toString()append(boolean b),append(int i),append(long l),append(float f) append(double d)insert(int index,int i)insert(int index,long l),insert(int index,float f)insert(int index,double d)SISEJava语言程序设计实用教程append和insert l a

37、ppend方法都是向字符串缓冲区“追加追加”元素,但是,这个“元素”参数可以是布尔量、字符、字符数组、双精度数、浮点数、整型数、长整型数对象类型的字符串、字符串和StringBuffer类等。如果添加的字符超出了字符串缓冲区的长度,Java将自动进行扩充。l insert是在当前StringBuffer对象中插入一个元素,在索引号offset处插入相应的值。SISEJava语言程序设计实用教程练习使用insert方法 char data=a,b,c,d,e; StringBuffer buffer=new StringBuffer(); buffer.insert(0,100); buffer

38、.insert(0,2.5F); buffer.insert(3,*); buffer.insert(0,250.0D); buffer.insert(5,is equal to); SISEJava语言程序设计实用教程练习输出结果 按照执行顺序来的到的结果 buffer.insert(0,100); 100 buffer.insert(0,2.5F); 2.5100 buffer.insert(3,*); 2.5*100 buffer.insert(0,250.0D); 250.02.5*100 buffer.insert(5,is equal to); 250.0 is equal to 2.5*100 最后结果为: 250.0 is equal to 2.5*100 SISEJava语言程序设计实用教程总结l掌握两类字符串的定义和使用。l掌握两类字符串的各种基本操作方法。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!