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
内的指数,与index
codePointOffset
代码点。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模型基础知识 一.数据库设计过程 数据库设计的关键阶段? 各个阶段设计的主要任务? 基础条件:清楚一个应用系统的功能需求与数据需求(直接与用户交互.数据流程图示例/UML类图等) 核心阶 ...
说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第四讲 GridView 72般绝技 作者 ...
原文:<ArcGIS Engine+C#实例开发教程>第四讲 状态栏信息的添加与实现 摘要:在上一讲中,我们完成了 MapControl 和PageLayoutControl两种视图的同步 ...
目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...
好几天没有在网上总结了.我把ppt先誊写在本子上,这样听的时候记录就方便很多,添些东西就可以. 我想先看shell那部分,但是没有之前几章的准备,是没法跟着视频动手操作的.所以还是按部就班得学习. 虽 ...
原文 http://blog.csdn.net/abcjennifer/article/details/7749309 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...
PE格式第四讲,数据目录表之导入表,以及IAT表 一丶IAT(地址表) 首先我们思考一个问题,程序加载的时候会调用API,比如我们以前写的标准PE 那么他到底是怎么去调用的? 他会Call 下边的Jm ...
逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...
随机推荐
题意 \(yyb\)要去与\(m\)\((m\le100)\)个人玩游戏 由于\(yyb\)忙着切大火题,他没有太多的精力浪费在游戏上 所以仁慈的\(yyb\)决定放\(m\)个人一条生路,不吊打他们 ...
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
Python中支持字符串格式化,其基本形式如下: str = "I'm {name},{age} years old" print(str.format(name="te ...
一直以来不知Android中Loader怎么用,今天晚上特意花了时间来研究,算是基本上搞明白了,现在把相关的注释和代码发出来,以便笔记和给网友一个参考,错误之处还望大家给我留言,共同进步,这个例子采用 ...
private static JSONObject createJSONObject() { JSONObject jsonObject = new JSONObject(); jsonObject. ...
大家对 IF ELSE 语句应该都很熟悉吧,它是用来对过程进行控制的.在 SQL 的世界中 CASE 语句有类似的效果.下面简单的介绍 CASE 语句的用法. CASE 语句的形式 事实上,CASE ...
此迁移计划是否影响 Azure 虚拟机上运行的任何现有服务或应用程序? 不可以. VM(经典)是公开上市的完全受支持的服务. 你可以继续使用这些资源来拓展你在 Azure 上的足迹. 如果我近期不打算 ...
docker容器数据卷相当于外置的移动硬盘 docker容器数据卷主要功能是:容器的持久化.容器间继承+共享数据 特点: (1)数据卷可以容器之间共享或重用数据 (2)卷中更改可以直接生效 (3)数据 ...
首先解释下宿主环境:一般宿主环境由外壳程序创建与维护,只要能提供js引擎执行的环境都可称之为外壳程序.如:web浏览器,一些桌面应用系统等.即由web浏览器或是这些桌面应用系统早就的环境即宿主环境. ...
在窗体中加入一下代码 #region 窗体圆角的实现 private void ComFrmBase_Resize(object sender, EventArgs e) { if (this.Win ...