9.1 字符串String类

String 类我们在前面章节介绍过,并且把它放在了int、double、boolean这些类型的后面,实际上String和这些类型有本质区别: String是一个类。 类就有属性,而String的属性很简单,就是一个字符类型的数组,表现出来是一个双引号引着的n个字符,例如 String str="i am a student learning Java.";
对象的行为表现为函数,接下来要学习的就是String类的函数。
返回类型
函数名及参数
说明
示例
int
length()
计算字符串的长度
String a="abcedf";那么a.length()的值就是6
char
charAt(int i)
返回下标为i的字符是多少,下标从0开始String a="abcedf";
a.charAt(0)的值就是'a'
boolean
equals(String str)
计算对象和str的内容是否一致,比较两个字符串的值是否相等不能使用==,只能使用本函数
String a="abcedf";
String b="abcedf";
String c="12";那么a.equals(b)的值就是true,a.equals(c)的值就是false
boolean
equalsIgnoreCase(String str)忽略大小写,计算对象和str的内容是否一致String a="abcedf";
String b="Abcedf";
String c="12";
那么a.equalsIgnoreCase(b)的值就是true
String
toUpperCase()
把字符串里面所有的字母都变成大写。(原字符串值不变)String a="abcedf12F";
a=a.toUpperCase()后a的值就是"ABCDEFG12F"
StringtoLowerCase()把字符串里面所有的字母都变成小写。(原字符串值不变)String a="ABCDEFG12F";
a=a.toLowerCase()后a的值就是"abcedf12F"
String
trim()
把字符串前后的空格删掉,包括空格、tab字符,转行。(原字符串值不变)String a="abcedf  ";
a=a.trim()后a的值就是"abcedf"
Stringsubstring(int start,int end)
截取字符串,从下标start开始到下标end结束,其中包含start但不包含end。end参数可以没有,表示截取到末尾。(原字符串值不变)String a="abcedf12F";
a.substring(1,3)的值是"bc"
a.substring(0,3)的值是"abc"
a.substring(3)的值是"edf12F"
int
indexOf(String str)
str在字符串中第一次出现的下标。如果没有出现过,返回-1
String a="abcedf12F";
a.indexOf("ce")的值就是2
int
lastIndexOf(String str)
str在字符串中最后一次出现的下标。如果没有出现过,返回-1String a="abcedfb2F";
a.lastIndexOf("b")的值就是6
int
indexOf(String str,int k)
str在字符串中从下标k开始,第一次出现的下标。如果没有出现过,返回-1
String a="abcedfceF";
a.indexOf("ce",4)的值就是6
int
lastIndexOf(String str,int k)
str在字符串中从下标k开始,最后一次出现的下标。如果没有出现过,返回-1String a="abcedfb2F";
a.lastIndexOf("b",3)的值就是6
String
replaceAll(String str1,String str2)
把字符串中所有str1替换成str2。(原字符串值不变)String a="abceadfab2F";
a.replaceAll("a","A")的计算结果是"AbceAdfAb2F"
a.replaceAll("a","")表示删掉所有字符'a',计算结果是"bcedfb2F"
String
+
两个字符串或数值前后相连
String a="abceadfab2F";
a=a+"3";后a的值是"abceadfab2F3"
char[]
toCharArray()
将字符串的字符保存到一个字符数组(原字符串值不变)
String a="abceadfab2F";
a.toCharArray()后得到一个字符数组,它值是{'a','b','c','e','a','d','f','a','b','2','F'}
String[]
split(String str)
将字符串按照str为分隔字分成一个数组,str可以是正则表达式String a="abceadfab2F";
a.split("a")后得到的数组是{"bce","df","b2f"}
char[]
toCharArray()
将字符串的字符保存到一个字符数组(原字符串值不变)
String a="abceadfab2F";
a.toCharArray()后得到一个字符数组,它值是{'a','b','c','e','a','d','f','a','b','2','F'}
boolean
contains(String str)
假如对象内容包含str的值,那么返回true;否则返回false
String a="abceadfab2F";
a.contains("ab")的值是true
a.contains("abd")的值是false
官方文档String
这些是String类的一些常用函数,在面向对象里面,我们称它们为方法(method)。函数、方法这两个术语不用区分。它们就是对象的行为。使用方法是: 对象名.方法名(参数) 注意有些方法是没有参数的,这类方法只需要对象本身的属性就能计算,例如str.length():计算字符串str的长度
 下面是一个使用substring,indexOf和replace的例子,提取一个HTML片段的内容,a是一段html代码片段:
public static void main(String[]args){
    String a="< li id='li_010000'>< a href='#' onclick='getSubChapter('010000')'>第1章& nbsp;& nbsp;Java基础< /a>"+"< li id='li_020000'>< a href='#'onclick='getSubChapter('020000')'>第2章& nbsp;& nbsp;变量和运算符< /a>"+"< li id='li_030000'>< a href='#' onclick='getSubChapter('030000')'>第3章& nbsp;& nbsp;分支结构< /a>'"+"< li id='li_040000'>< a href='#'onclick='getSubChapter('040000')'>第4章& nbsp;& nbsp;循环结构< /a>";
    int start=-1;
    while(true){
        //获得开始的位置 
        start=a.indexOf("第",start+1);
        //获得结束的位置 
        int end=a.indexOf("< /a>",start+1);
        //找不到"第"字,结束循环 
         if(start==-1)
            break;
        //切出片段 
        String t=a.substring(start,end);
        //删掉中间的HTML 
        t=t.replaceAll("& nbsp;"," ");
        System.out.println(t);
    }
}
这个例子是关于split方法的:
public static void main(String args[]){
    String a="abceadfab2F";
    //数组temp的值是{"","bce","df","b2f"} 
    String[]temp=a.split("a");
    //打印temp  
     for(int i=0;i < temp.length;i++)
        System.out.println(temp[i]);
}