第十章 字符串 您所在的位置:网站首页 string删除指定位置 第十章 字符串

第十章 字符串

2023-05-24 00:19| 来源: 网络整理| 查看: 265

                                10.1 String类

10.1.1声明字符串

在Java语言中,字符串必须包含在一对双引号(“”)之内。例如:

"23.23"、"ABCDE"、“你好”

以上这些都是字符串常量,字符串常量可以是系统能够显示的任何文字信息,甚至可以是单个字符。

可以通过以下语法格式来声明字符串变量:

 String str;

String:指定该变量为字符串类型

str:任意有效的标识符,表示字符串变量的名称。

声明字符串变量s,代码如下:

String s;

 10.1.2 创建字符串

在Java语言中,将字符串作为对象来处理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法。String类的常用的构造方法如下:

1、String(char a[])

该方法用一个字符数组a创建String对象,代码如下:

char a[]{'g','o','o','d'};

String s = new String(a);                等价于String s = new String("good")

 2、String(char a[],int offset,int length)

该方法提取字符数组a中的一部分创建一个字符串对象。参数offset表示开始截取字符串的位置,length表示截取字符串的长度。代码如下:

char a[] = {'s','t','u','d','e','n','t'};

String s = new String(a,2,4);        等价于String s = new String("uden");

 3、String(char[] value)

该构造方法可分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果。代码如下:

char a[]={'s','t','u','d','e','n',t'};

String s = new String(a);         等价于 String s = new String("student");

除通过以上几种使用String类的构造方法来创建字符串变量外,还可通过将字符串常量的引用赋值给一个字符串变量来创建字符串。代码如下:

String str1,str2;

str1 = "We are students"

str2 = "We are students"

 此时,str1与str2引用相同的字符串变量,因此具有相同的实体,内存示意图如下图所示:

10.2 连接字符串

10.2.1 连接多个字符串

使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个String对象并产生一个新的String对象。

【例10.1】先连接一副对联的上、下联,再分行输出在控制台上

代码如下:

public class Join { public static void main(String[] args) { // TODO Auto-generated method stub String s1 = new String("春色绿千里"); String s2 = new String("马蹄香万家"); String s = s1+"\n"+s2; System.out.println(s); } }

 运行结果如下:

 10.2.2 连接其他数据类型

        字符串也可同其他基本数据类型进行连接。如果将字符串同其他数据类型数据进行连接,会将其他数据类型的数据直接转换为字符串。

【例10.2】统计每天的阅读和上机时间

代码如下:

public class Link {//创建类 public static void main(String[] args) {//主方法 // TODO Auto-generated method stub int booktime = 4;//声明的int型变量booktime float practice = 2.5f;//声明的float型变量practice //将字符串与整型、浮点型变量相连,并将结果输出 System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习"); } }

运行结果如下:

 10.3 获取字符串信息

10.3.1获取字符串长度

使用String类的length()方法可获取声明的字符串对象的长度。语法如下:

str.length();

 其中,str为字符串对象。

获取字符串长度,代码如下:

String str = "We are students";

int size = str.length();

 上段代码是将字符串str的长度赋值给int型变量size,此时变量size的值为15,这表示length()方法返回的字符串的长度(包括字符串中的空格)。

10.3.2 字符串查找

String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。

1、indexOf(String s)

该方法用于返回参数字符串s在指定字符串中首次出现的索引位置。当调用String类的indexOf()方法时,会从当前字符串的开始位置搜索s的位置。如果没有检索到字符串s,该方法的返回值是-1.语法如下:

str.indexOf(substr)

 查找字符a在字符串str中的索引位置,代码如下:

String str = "We are students";

int size = str.indexOf("a");

 2.lastIndexOf(String str)

该方法用于返回指定字符中最后一次出现的索引位置。当调用String类的lastIndexOf()方法时,会从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回-1.语法如下:

str.lastIndexOf(substr)

 【例10.3】用两种方式判断字符串的长度

 

 10.3.3获取指定索引位置的字符

使用charAt()方法可将指定索引处的字符返回。语法如下:

str.charAt(int index)

 【例10.4】查看指定索引位置上的字符

 10.4 字符串操作

10.4.1获取字符串

 【例10.5】《将进酒》的作者是哪位诗人?

 10.4.2去除空格

trim()方法返回字符串的副本,忽略前导空格和尾部空格。语法如下:

str.trim()

 其中,str为任意字符串对象。

【例10.6】去掉字符串首、尾的空格

 10.4.3字符串替换

10.4.4判断字符串的开始与结尾

startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型

1、startsWith()方法

该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。语法如下:

 str.startsWith(String prefix)

 其中,prefix是指作为前缀的字符串。

2、endsWith()方法

该方法用于判断当前字符串是否为以给定的子字符串结束。语法如下:

str.endsWith(String suffix)

 其中,suffix是指作为后缀的字符串。

【例10.8】判断字符串是否以指定的内容开始或结束

 

 10.4.5判断字符串是否相等

1.equals()方法

        如果有两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回ture。否则,返回flase。语法如下:

str.equalslgnoreCase(String otherstr)

 2.equalslgnoreCase()方法

使用equals()方法对字符串进行比较时是区分大小写,而使用equalsIgnoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相等,返回结果仍为boolean类型,语法如下:

str.equalsIgnoreCase(String otherstr)

 【例10.9】判断“abc”与“ABC”是否相等

 10.4.6按字典顺序比较两个字符串

【10.10】判断字母b的位置

 10.4.7字母大小写转换

1、toLowerCase()方法

        该方法将字符串的所有大写字母转换为小写。如果字符串中没有应该被转换的字符,则将原字符串返回。否则返回一个新字符串,将原字符串中每个小写字母都转换成大写,字符串长度不变。语法如下:

str.toLowerCase()

 2.toUpperCase()方法

        该方法将字符串所有的小写字母转换为大写。如果字符串中没有应该被转换的字符,则将原字符串返回,否则返回一个新字符串,将原字符串中每个小写字母都转换成大写,字符串长度不变,语法如下:

str.toUpperCase()

 10.4.8字符串分割

1、split(String sign)

该方法可根据给定的分割符对字符串进行拆分,语法如下:

str.split(String sign)

 其中,sign为分割字符串的分割符,也可以使用正则表达式。

2、split(String sign.int limit)

该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。语法如下:

str.split(String sign.int limit)

 【例10.12】按要求分割“192.168.0.1”

                        10.5格式化字符串

1、format(String format,Object...args)

该方法使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。语法如下:

str.format(String format,Object...args)

 2、format(Local I,String format,Object...args)

        该方法使用指定的语言环境,格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用其指定的语言环境。语法如下:

str.format(Local I String format,Object...args)

10.5.1 日期和时间字符串格式化

1、日期格式化

先来看一个例子。返回一个月中的天数,代码如下:

 Date date = new Date();//创建Date对象date

String s  = String.format("%te",date);//通过format()方法对date进行格式化

 

 

 

 2.时间格式化

使用fomat()方法不仅可以完成日期的格式化,也可以实现时间的格式化。时间的格式化转换符要比日期的格式化转换符更多、更精确,它可以将时间格式化为时,分,秒,毫秒

 

3.格式化常见的日期时间组合:

格式化日期与时间组合的转换符定义了各种日期时间组合的格式

10.5.2 常规类型格式化

常规类型格式化可应用与任何参数类型

 

 

 10.6 使用正则表达式

正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是含有一下具体特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。

正式表达式中,可以使用方括号括起若干个字符来表示一个元字符,该元字符可以代表方括号中的任何一个字符。

reg=“【abc】4”代表:a4,b4,c4。

【^456】:代表4、5、6之外的任何字符。

【a-r】:代表a-r中的任何一个字母。

【a-zA-Z】:可表示任意一个英文字母。

【a-e【g-z】】:代表a~r或g~z中的任何一个字母(并运算)。

【a-o&&【def】】:代表字母d、e、f(交运算)。

【a-d&&【^bc】】:代表字母a、d(差运算)。

在正则表达式中允许使用限定修饰符来限定元字符出现的次数,例如,“A*”代表A可在字符串中出现0次或多次

 

 

 

10.7 字符串生成器

创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象。如果 重复地对字符串进行修改,将极大地增肌系统的开销。而JDK新增了可变的字符序列StringBuilder类,大大提供了频繁增加的字符串的效率

 

通过这一实例可以看出,两种操作执行的时间差距很大。如果在程序中频繁地附加字符串,建议使用StringBuilder类    新创建的 StringBuilder对象初始容量是16个字符,可以自行指定初始长度。如果附加的字符超过可容纳的长度,则  StringBuilder将自长以容纳被字符。若要使用StringBuilder类最后输字结果,可使用toString方法。利用StringBuilder类中的方法可态地执行添加、删除和插入等字符串的编辑操作。该类的常用方法如下

1. append()方法 该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符串生成器等。语法如下:

append(content)

 其中,content器内,类数据或者其他对象 2. insert(int offset,arg)方法 该方法用于向字符串生成器中的指定位置插入数据内容。通过该方法的不同重载形式,可实现向字符串生成器中插入int、float、char 和boolean 等基本数据类型的数据或其他对象。语法如下:

insert(int offset arg)

ffset:字符串生成器的位置。该参数必须大于等于 0,且小于等于此序列的长度。

arg:将插入至字符串生成器的位置。该参数可以是任何数据类型的数据或其他对象。

向字符串生成器中指定的位置添加字符,代码如下:

StringBuilder bf =new StringBuilder("hello");    //创建字符生成器     bf.insert(5, "world");    //添加至字符生成器的位置及内容     System.out.printn(bf.toString());    //此时输出信息为helloworld    

3. delete(int startint end)方法 移除此序列的子字符串中的字符。该子字符串从指定的start处开始,一直到索引end-1处的字符。如果不存在这种字符,则一直到序列尾部。如果start等于end,则不发生任何更改。语法如下:

delete(int start, int end)

start:将要删除的字符串的起点位置。

 end:将要删除的字符串的终点位置。

删除指定位置的子字符串,代码如下: 

StringBuilder bf=new StringBuilder(“StringBuilder”);

bf.delete(5,10);

System.out.println(bf.toString());  

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有