Notes 20180312 : String第四讲_String上的操作
作为一个基本的工具类,同时又是使用频率很高的类,Java为其提供了丰富的方法支持。Java中的String类中包含了50多个方法。最令人惊讶的是绝大多数方法都很有用,下面我们根据功能来分类介绍一下:
1. 关于码点的方法
在昨天我们探讨了一下码点,其中也详细叙述了码点的方法,这里我就不再赘述,只追加出来:
- int
codePointAt(int index)返回指定索引处的字符(Unicode代码点)。IndexOutOfBoundsException - int
codePointBefore(int index)返回指定索引之前的字符(Unicode代码点)。IndexOutOfBoundsException - int
codePointCount(int beginIndex, int endIndex)返回此String指定文本范围内的Unicode代码点数。IndexOutOfBoundsException - int
offsetByCodePoints(int index, int codePointOffset)返回此String内的指数,与indexcodePointOffset代码点。IndexOutOfBoundsException
2. 字符串的长度
String中提供了两个方法用于获取长度,关于这两个方法,前面介绍码点时,也介绍过,不在详细说了;
- int
length()返回此字符串的长度(码点单元数量)。 - int
codePointCount(int beginIndex, int endIndex)返回此String指定文本范围内的Unicode代码点数。IndexOutOfBoundsException
3. 提高效率的一个方法String.intern()
是在不知道该怎么介绍该方法,所以取了这么个名字,该方法本人在另一篇文章中详细说过,参见之;
4. 根据给定条件查询字符串
Java中针对数组提供了两种查询方式,一种是根据已知的索引查询该位置的代码单元,一种是根据已知的字符查询索引位置,下面我们来看看:
4.1 根据字符查询索引
根据字符来查询对应索引,String提供了8个这样的方法,这8个方法不会出现索引越界的异常,查询不到会返回-1,这8个方法分为正向查找(indexOf)和反向查找(lastIndexOf);
- indexOf(int ch) 返回指定字符第一次出现的字符串内的索引。
- indexOf(int ch, int fromIndex) 返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。
- indexOf(String str) 返回指定子字符串第一次出现的字符串内的索引。
- indexOf(String str, int fromIndex) 返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。
- lastIndexOf(int ch) 返回指定字符的最后一次出现的字符串中的索引。
- lastIndexOf(int ch, int fromIndex) 返回指定字符的最后一次出现的字符串中的索引,从指定的索引(包含)开始向后搜索。
- lastIndexOf(String str) 返回指定子字符串最后一次出现的字符串中的索引。
- lastIndexOf(String str, int fromIndex) 返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始向后搜索。
/**
* 根据给定信息查询字符串
*/
@Test
public void fun3(){
String str1 = "归云一去无踪迹,何处是前期?";
String str2 = "123242543534121214";
System.out.println("字符一在字符串中的位置:"+str1.indexOf('一'));
System.out.println("字符何从索引2开始寻找,索引是:"+str1.indexOf('何', 2));
System.out.println("字符串何处的索引是:"+str1.indexOf("何处"));
System.out.println("字符串何处的索引从给定索引找是:"+str1.indexOf("何处", 3));
System.out.println("----"+str1.indexOf("何处", 9));//查找不到返回-1
System.out.println("字符1最后一次出现的位置是:"+str2.lastIndexOf('1'));
System.out.println("字符1从索引5开始反向寻找,最后一次出现的位置是:"+str2.lastIndexOf('2', 5));
System.out.println("字符串12出现的最后位置:"+str2.lastIndexOf("12"));
System.out.println("字符串12出现的最后位置,从给定的索引反向查询:"+str2.lastIndexOf("12", 15));
System.out.println("如果lastIndexOf的参数是空字符串,那么返回的结果和求字符串长度是一样的:"+str2.lastIndexOf(""));
System.out.println("字符串长度:"+str2.length());
System.out.println("如果查询的在字符串中没有出现:"+str1.indexOf('1'));
System.out.println("如果查询的在字符串中没有出现:"+str2.lastIndexOf(" "));
String str = "jojjjjj";
//查找指定字符在字符串中第一次出现的位置,若字符串中没有要查找的字符返回-1
System.out.println("j第一次出现的位置是:"+str.indexOf('。'));
//返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。若字符串中没有要查找的字符返回-1
System.out.println("o在脚标2后第一次出现的索引:"+str.indexOf('o', 2));
System.out.println(str2.lastIndexOf(100));//索引越界不会异常,会返回负值-1 字符串中凡是查询不到那么就返回-1
}

下面我们再看一个涉及到辅助字符的操作;
String str3 = "Notes 20180312 : String第四讲_String上的操作的更多相关文章
- 【数据库上】 第四讲 E-R模型基础知识
第四讲 E-R模型基础知识 一.数据库设计过程 数据库设计的关键阶段? 各个阶段设计的主要任务? 基础条件:清楚一个应用系统的功能需求与数据需求(直接与用户交互.数据流程图示例/UML类图等) 核心阶 ...
- 转:C#精髓 第四讲 GridView 72般绝技
说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第四讲 GridView 72般绝技 作者 ...
- 《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现
原文:<ArcGIS Engine+C#实例开发教程>第四讲 状态栏信息的添加与实现 摘要:在上一讲中,我们完成了 MapControl 和PageLayoutControl两种视图的同步 ...
- 高翔《视觉SLAM十四讲》从理论到实践
目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...
- linux 学习3 第四讲 文件常用命令
好几天没有在网上总结了.我把ppt先誊写在本子上,这样听的时候记录就方便很多,添些东西就可以. 我想先看shell那部分,但是没有之前几章的准备,是没法跟着视频动手操作的.所以还是按部就班得学习. 虽 ...
- Stanford机器学习---第四讲. 神经网络的表示 Neural Networks representation
原文 http://blog.csdn.net/abcjennifer/article/details/7749309 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
- 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)
32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...
- PE格式第四讲,数据目录表之导入表,以及IAT表
PE格式第四讲,数据目录表之导入表,以及IAT表 一丶IAT(地址表) 首先我们思考一个问题,程序加载的时候会调用API,比如我们以前写的标准PE 那么他到底是怎么去调用的? 他会Call 下边的Jm ...
- 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式
逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...
随机推荐
- Windows下多个JDK版本之间的切换
一.JDK版本切换批处理脚本 我们平时在window上做开发的时候,可能需要同时开发两个甚至多个项目,有时不同的项目对JDK的版本要求有区别,这时候我们可能会在一台电脑上安装多个版本的JDK,如下 ...
- LeetCode 531----Lonely Pixel I----两种算法之间性能的比较
Lonely Pixel I 两种算法之间的性能比较 今天参加LeetCode Weekly Contest 22,第二题 "Lonely Pixel I" 问题描述如下: Giv ...
- Android学习笔记(4)----Rendering Problems(The graphics preview in the layout editor may not be accurate)
在Android Studio中新建了一个 setting.xml 文件,布局好文件后,从 Text 界面切换到 Design 界面,显示了如下错误: 网上搜寻 The graphics previe ...
- Microsoft Visual Studio 2010下log4cplus的安装,集成,测试
原文:http://blog.csdn.net/eclipser1987/article/details/6904301 log4cplus是C++编写的开源的日志系统,功能非常全面,用到自己开发的工 ...
- 自学git心得-5
标签管理也是git里面比较重要的一部分内容,我们下载软件的时候经常看到诸如v2.0.v2.3.0这样的版本号,在git里也是一样,有时为了避免分支的名称五花八门而发生混淆的情况,我们常常会 给分支贴上 ...
- 养兔子Fibo函数优化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Jmeter————监控服务器性能
1. 下载jmeter插件 上面2个是jmeter插件,第3个要放在监控的服务器中. 2. 解压压缩包 找到解压包中的JAR文件,并拷贝到jmeter的lib/ext目录下,这里下载的1.4版本的插件 ...
- 使用UILabel实现滚动字幕移动效果
使用UILabel实现滚动字幕移动效果 这个链接中的代码也实现了这种效果 https://github.com/cbpowell/MarqueeLabel 最终效果如下: 原理如下: 1. 获取文本 ...
- 动态展开tableView的cell[1]
动态展开tableView的cell[1] 源码地址:https://github.com/xerxes235/HVTableView 虽然作者写的demo很好看,可是,你很难理解他是怎么玩的-_-! ...
- css3—产品列表之鼠标滑过效果
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8" /> <title&g ...