第十章 字符串 | 您所在的位置:网站首页 › string删除指定位置 › 第十章 字符串 |
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 实验室设备网 版权所有 |