Java字符串String类操作方法详细整理
关于String类的基本操作,可分为以下几类: 1、基本操作方法? 2、字符串比较? 3、字符串与其他数据类型之间的转换? 4、字符与字符串的查找? 5、字符串的截取与拆分? 6、字符串的替换与修改 我觉得在整理到下面的内容之前需要给自己提的醒是关于字符串的操作方法我们是不需要像其他操作一样手动导包的,其String和StringBuffer等类封装在java.lang包中,我们直接调用字符串方法即可! 首先说一下基本操作方法,字符串的基本操作方法中包含以下几种: (1)获取字符串长度length()? (2)获取字符串中的第i个字符charAt(i)? (3)获取指定位置的字符方法getChars(4个参数) 1、?获取字符串长度方法 格式:int length = str.length(); 2、获取字符串中的第i个字符方法 格式:char ch = str.charAt(i);? //i为字符串的索引号,可得到字符串任意位置处的字符,保存到字符变量中 3、获取指定位置的字符方法 格式: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编码是默认字符集编码,它是用编码表示的字符。 下面就上代码简单演示一下三种方法的用法:
String str = "如何才能变得像棋哥一样优秀?算了吧,憋吹牛逼!";
System.out.println(str);
length = str.length();
System.out.println("字符串的长度为:"+
ch = str.charAt(7);
System.out.println("字符串中的第8个字符为:"+
chardst[] = [80];
str.getChars(0,14,chardst,0
System.out.println(chardst);
?运行结果如下: ? ?? 二、字符串比较?我们知道,明确的数值之间可以很方便地进行比较,那么字符串该如何进行比较呢?字符串的比较是将两个字符串从左到右逐个字符逐个字符进行比较,比较的依据是当前字符的Uncode编码值,直到比较出两个不同字符的大小。 字符串比较也分为两大类:一类是字符串大小的比较,这样的比较有三种结果,大于、等于以及小于;还有一类比较方法就是比较两个字符串是否相等,这样产生的比较结果无非就两种,ture和false。 ? ? 1、首先看一下第一种比较大小这类需求中的方法: ? ? ? ? ?(1)下字符串的大小比较方法 ????????????????? ?格式:int result = str1.compareTo(str2); ????????????????输出三种比较结果:若该字符串的Unicode值<参数字符串的Unicode值,结果返回一负整数;若若该字符串的Unicode值=参数字符串的Unicode值,结果返回0;若该字符串的Unicode值>参数字符串的Unicode值,结果返回一正整数。 ? ? ? ? ?(2)?字符串的大小比较方法 ? ? ? ? ? ? ? ? ? ?格式:int result = str1.compareToIgnoreCase(str2); ? ? ? ? ? ? ? ? 在忽略字符串大小写情况下,返回三种比较结果:输出三种比较结果:若该字符串的Unicode值<参数字符串的Unicode值,结果返回一负整数;若若该字符串的Unicode值=参数字符串的Unicode值,结果返回0;若该字符串的Unicode值>参数字符串的Unicode值,结果返回一正整数。 ? ? 2、然后看一下第二种判别两种字符串是否相等(相等情况下必须保证二者长度相等)需求中的方法: ? ? ? ? ? ? (1)下判别字符串相等的方法 ???????????????????格式:boolean result = str1.equals(str2); ???????????????????当且仅当str1和str2的长度相等,且对应位置字符的Unicode编码完全相等,返回true,否则返回false ????? ? ?? ? (2)? ?下判别字符串相等的方法 ????????????????? ? 格式:boolean result = str1.equals(str2); ? demo如下: String str1 = "elapant" String str2 = "ELEPANT";
String str3 = "Apple" String str4 = "apple"
(str1.compareTo(str2)>0 System.out.println(str1+">"+ } (str1.compareTo(str2) == 0 System.out.println(str1+"="+ } System.out.println(str1+"="+
(str1.compareToIgnoreCase(str2)>0 System.out.println(str1+">"+ } (str1.compareToIgnoreCase(str2) == 0 System.out.println(str1+"="+ } System.out.println(str1+"<"+
System.out.println(str3+"="+ } System.out.println(str3+"!="+
System.out.println(str3+"="+ } System.out.println(str3+"!="+
运行结果如下: ? ?三、字符串与其他数据类型的转换? 有时候我们需要在字符串与其他数据类型之间做一个转换,例如将字符串数据变为整形数据,或者反过来将整形数据变为字符串类型数据,"20"是字符串,20就是整形数。我们都知道整形和浮点型之间可以利用强制类型转换和自动类型转换两种机制实现两者之间的转换,那么"20"和20这两种属于不同类型的数据就需要用到String类提供的数据类型转换方法了。 ? ?由于数据类型较多,因而转换使用的方法也比较多,在此我就用一个表格罗列一下:
bool = Boolean.getBoolean("false");
integer = Integer.parseInt("20");
LongInt = Long.parseLong("1024");
f = Float.parseFloat("1.521");
d = Double.parseDouble("1.52123");
bt = Byte.parseByte("200");
ch = "棋哥".charAt(0= String.valueOf(bool);
String stri1 = String.valueOf(integer);
String strl1 = String.valueOf(LongInt);
String strf1 = String.valueOf(f);
String strd1 = String.valueOf(d);
String strbt1 = String.valueOf(bt);
String strch1 = String.valueOf(ch);
?四、字符串查找?我们有时候需要在一段很长的字符串中查找我们需要的其中一部分字符串或者某个字符,String类恰恰提供了相应的查找方法,这些方法返回的都是目标查找对象在字符串中的索引值,所以都是整形值。具体分类情况如下: ?字符串查找无非分为两类:查找字符串和查找单个字符,而查找又可分为查找对象在字符串中第一次出现的位置和最后一次出现的位置,再扩展一步,我们可以缩小查找范围,在指定范围之内查找其第一次或最后一次出现的位置。 ? (1)出现的位置 ????????? ?1、 ????????????? ? 格式:1、str.indexOf(ch); ????????????????????????? 2、str.indexOf(ch,fromIndex); //包含fromIndex位置 ????????????? ? 格式1返回指定字符在字符串中第一次出现位置的索引?? ?????????????? ?格式2返回指定索引位置之后第一次出现该字符的索引号 ????????? ?2、 ????????????? ? 格式:1、str.lastIndexOf(ch); ????????????????????????? 2、str.lastIndexOf(ch,fromIndex); ????????????? ? 格式1返回指定字符在字符串中最后一次出现位置的索引 ????????????? ? 格式2返回指定索引位置之前最后一次出现该字符的索引号 ? ?(2)? 出现的位置 ????? ? ? 1、? ????????????? ?格式:1、str.indexOf(str); ?????????????????????????2、str.indexOf(str,fromIndex); ????????????? ?格式1返回指定子字符串在字符串中第一次出现位置的索引 ????????????? ?格式2返回指定索引位置之前第一次出现该子字符串的索引号 ????? ? ? ?2、 ????????????? ? 格式:1、str.lastIndexOf(str); ????????????????????????? 2、str.lastIndexOf(str,fromIndex);? ????????????? ? 格式1返回指定子字符串在字符串中最后一次出现位置的索引 ????????????? ? 格式2返回指定索引位置之前最后一次出现该子字符串的索引号 看代码:
= "How qi bocome handsome like qi ge";
System.out.println("该字符串为:"+
index1 = str.indexOf(" ");
index2 = str.indexOf(" ",4);
System.out.println("第一个空格所在索引为:"+"索引4以后的第一个空格所在索引为:"+"*****************"
index3 = str.lastIndexOf(" ");
index4 = str.lastIndexOf(" ",10);
System.out.println("最后一个空格所在索引为:"+"索引10以前最后一个空格所在索引为:"+"*****************"
index5 = str.indexOf("qi");
index6 = str.indexOf("qi",5);
System.out.println("子字符串qi第一次出现位置的索引号为:"+"索引5以后子字符串qi第一次出现位置的索引号为:"+"*****************"
index7 = str.lastIndexOf("qi" index8 = str.lastIndexOf("qi",5"子字符串qi最后一次出现位置的索引号为:"+"索引号5以后子字符串qi最后一次出现位置的索引号为:"+
结果截图如下: ? ?五、截取与拆分?这类方法是截取出一个长字符串中的一个子字符串或将字符串按照正则表达式的要求全部拆分保存到一个字符串数组中。具体方法如下所示: ?(1) 截取方法 ? ? ? 1、 ?? ????? ? ? ? 格式1:String result = str.substring(index); ????????? ? 格式2:String result = str.substring(beginIndex,EndIndex);//实际索引号[beginIndex,EndIndex-1] ????? ? ?? ?结果:截取出范围内的字符串 (2)拆分方法 ????? ?1、 ????????? ? 格式1 :String strArray[] = str.split(正则表达式);// 拆分的结果保存到字符串数组中 ????????? ? 格式2:String strArray[] = str.split(正则表达式,limit); 代码示例如下:
= "How to cut and split strings";
System.out.println("字符串为:"+ length = str.length();
System.out.println("字符串长度为:"+
firstIndex = str.indexOf(' ');
lastIndex = str.lastIndexOf(' ');
System.out.println("第一个空格的索引号为:"+"最后一个空格的索引号为:"+
String firstWord = str.substring(0,firstIndex);
String lastWord = str.substring(lastIndex+1,length);
System.out.println("第一个单词为:"+"最后一个单词为:"+= str.split(" ");
System.out.println("拆分之后的各个词汇为:");
( i = 0;i
代码执行结果如下: ? 六、替换或修改终于到最后一类方法了,开心!!有时候我们需要对原字符串中的某些子字符串进行替换或修改,此时也需要String类提供的一些简单快捷好用的方法啦 (1)合并字符串 ????? ? ?格式:String result = str1.concat(str2);? ?//将str1和str2合并 ? (2)? :将字符全部转化为小写 ?????????格式:? String result = str.toLowerCase(); ? (3)? : 将字符全部转化为大写 ????? ? ?格式:String result = str.toUpperCase();? ? ? ? ?? ? (4:需要匹配正则表达式? ? ? ? ? 代码如下:
= "vbasic"= "Vbasic""str1 = "+"str2 = "+="str1和str2合并后的字符串为:"+="str1的字符全部转换为小写:"+="str2的字符全部转换为大写:"+= str1.replaceFirst("(?i)VBASIC","C++"= str2.replaceFirst("(?-i)VBASIC","C++""替换后的str1:"+"替换后的str2:"+
代码运行结果截图: ? 结束语参考原文:https://blog.csdn.net/sjq__python_web/article/details/80099454 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |