最近项目开发中要对文本进行处理,趁机整理下相关的方法
String类的基本操作,可分为以下几类:1、基本操作方法 2、字符串比较 3、字符串与其他数据类型之间的转换 4、字符与字符串的查找 5、字符串的截取与拆分 6、字符串的替换与修改
一、String基本操作方法
首先说一下基本操作方法,字符串的基本操作方法中包含以下几种:(1)获取字符串长度length() (2)获取字符串中的第i个字符charAt(i) (3)获取指定位置的字符方法getChars(4个参数)
1、 获取字符串长度方法length()
格式:int length = str.length();
2、获取字符串中的第i个字符方法charAt(i)
格式:char ch = str.charAt(i); //i为字符串的索引号,可得到字符串任意位置处的字符,保存到字符变量中
3、获取指定位置的字符方法getChars(4个参数)
格式:char array[] = new char[80]; //先要创建以一个容量足够大的char型数组,数组名为array
str.getChars(indexBegin,indexEnd,array,arrayBegin);
解释一下括号中四个参数的指向意义:1、indexBegin:需要复制的字符串的开始索引
2、 indexEnd: 需要复制的字符串的结束索引,indexEnd-1
3、array: 前面定义的char型数组的数组名
4、arrayBegin:数组array开始存储的位置索引号
这样我们就可以将字符串中想要的范围内的字符都复制到字符数组中,将字符数组打印输出即可。
与getChars()类似的方法有一个getBytes(),两者使用上基本相同,只是getBytes()方法创建的是byte类型的数组,而byte编码是默认字符集编码,它是用编码表示的字符。
二、字符串比较
我们知道,明确的数值之间可以很方便地进行比较,那么字符串该如何进行比较呢?字符串的比较是将两个字符串从左到右逐个字符逐个字符进行比较,比较的依据是当前字符的Uncode编码值,直到比较出两个不同字符的大小。
字符串比较也分为两大类:一类是字符串大小的比较,这样的比较有三种结果,大于、等于以及小于;还有一类比较方法就是比较两个字符串是否相等,这样产生的比较结果无非就两种,ture和false。
1、首先看一下第一种比较大小这类需求中的方法:
(1)不忽略字符串大小写情况下字符串的大小比较方法compareTo(another str)
格式:int result = str1.compareTo(str2);
输出三种比较结果:若该字符串的Unicode值<参数字符串的Unicode值,结果返回一负整数;若若该字符串的Unicode值=参数字符串的Unicode值,结果返回0;若该字符串的Unicode值>参数字符串的Unicode值,结果返回一正整数。
(2) 忽略字符串大小写情况下字符串的大小比较方法compareTOIgnoreCase(another str)
格式:int result = str1.compareToIgnoreCase(str2);
在忽略字符串大小写情况下,返回三种比较结果:输出三种比较结果:若该字符串的Unicode值<参数字符串的Unicode值,结果返回一负整数;若若该字符串的Unicode值=参数字符串的Unicode值,结果返回0;若该字符串的Unicode值>参数字符串的Unicode值,结果返回一正整数。
2、然后看一下第二种判别两种字符串是否相等(相等情况下必须保证二者长度相等)需求中的方法:
(1)不忽略字符串大小写情况下判别字符串相等的方法eaquals(another str)
格式:boolean result = str1.equals(str2);
当且仅当str1和str2的长度相等,且对应位置字符的Unicode编码完全相等,返回true,否则返回false
(2) 忽略字符串大小写情况下判别字符串相等的方法equalsIgnoreCase(another str)
格式:boolean result = str1.equals(str2);
三、字符串与其他数据类型的转换
有时候我们需要在字符串与其他数据类型之间做一个转换,例如将字符串数据变为整形数据,或者反过来将整形数据变为字符串类型数据,"20"是字符串,20就是整形数。我们都知道整形和浮点型之间可以利用强制类型转换和自动类型转换两种机制实现两者之间的转换,那么"20"和20这两种属于不同类型的数据就需要用到String类提供的数据类型转换方法了。
由于数据类型较多,因而转换使用的方法也比较多,在此我就用一个表格罗列一下:
数据类型 字符串转换为其他数据类型的方法 其它数据类型转换为字符串的方法1 其他数据类型转换为字符串的方法2
boolean Boolean.getBoolean(str) String.valueOf([boolean] b) Boolean.toString([boolean] b)
int Integer.parseInt(str) String.valueOf([int] i) Int.toString([int] i)
long Long.parseLong(str) String.valueOf([long] l) Long.toString([long] l)
float Float.parseFloat(str) String.valueOf([float] f) Float.toString([float] f)
double double.parseFloat(str) String.valueOf([double] d) Double.toString([double] d)
byte Byte.parseByte(str) String.valueOf([byte] bt) Byte.toString([byte] bt)
char str.charAt(i) String.valueOf([char] c) Character.toString([char] c)
四、字符串查找
我们有时候需要在一段很长的字符串中查找我们需要的其中一部分字符串或者某个字符,String类恰恰提供了相应的查找方法,这些方法返回的都是目标查找对象在字符串中的索引值,所以都是整形值。具体分类情况如下:
字符串查找无非分为两类:查找字符串和查找单个字符,而查找又可分为查找对象在字符串中第一次出现的位置和最后一次出现的位置,再扩展一步,我们可以缩小查找范围,在指定范围之内查找其第一次或最后一次出现的位置。
(1)查找字符出现的位置
1、indexOf()方法
格式:1、str.indexOf(ch);
2、str.indexOf(ch,fromIndex); //包含fromIndex位置
格式1返回指定字符在字符串中第一次出现位置的索引
格式2返回指定索引位置之后第一次出现该字符的索引号
2、lastIndexOf()方法
格式:1、str.lastIndexOf(ch);
2、str.lastIndexOf(ch,fromIndex);
格式1返回指定字符在字符串中最后一次出现位置的索引
格式2返回指定索引位置之前最后一次出现该字符的索引号
(2) 查找字符串出现的位置
1、indexOf()方法
格式:1、str.indexOf(str);
2、str.indexOf(str,fromIndex);
格式1返回指定子字符串在字符串中第一次出现位置的索引
格式2返回指定索引位置之前第一次出现该子字符串的索引号
2、lastIndexOf()方法
格式:1、str.lastIndexOf(str);
2、str.lastIndexOf(str,fromIndex);
格式1返回指定子字符串在字符串中最后一次出现位置的索引
格式2返回指定索引位置之前最后一次出现该子字符串的索引号
五、截取与拆分
这类方法是截取出一个长字符串中的一个子字符串或将字符串按照正则表达式的要求全部拆分保存到一个字符串数组中。具体方法如下所示:
(1) 截取方法
1、substring()方法
格式1:String result = str.substring(index);
格式2:String result = str.substring(beginIndex,EndIndex);//实际索引号[beginIndex,EndIndex-1]
结果:截取出范围内的字符串
(2)拆分方法
1、split()方法
格式1 :String strArray[] = str.split(正则表达式);// 拆分的结果保存到字符串数组中
格式2:String strArray[] = str.split(正则表达式,limit);
六、替换或修改
终于到最后一类方法了,开心!!有时候我们需要对原字符串中的某些子字符串进行替换或修改,此时也需要String类提供的一些简单快捷好用的方法啦
(1)concat()方法合并字符串
格式:String result = str1.concat(str2); //将str1和str2合并
(2) toLowerCase()方法 将字符全部转化为小写
格式: String result = str.toLowerCase();
(3) toUpperCase()方法 将字符全部转化为大写
格式:String result = str.toUpperCase();
(4)replaceAll()、replaceFirst()方法:需要匹配正则表达式