一、8.1.3 String类的常用方法
(1) Boolean contain(String s): 判断当前String字符是否包含参数s的字符序列。
(2) Int IndexOf(String s)和Iast IndexOf(String s)(从后开始):
举例:
String tom – “I am a good cat”
Tom. IndexOf(“a”) //值是2
Tom. IndexOf(“good”,2) //值是7
(3) String substring(int statrpoint):
举例:
String tom – “我喜欢篮球”;
String str =tom.substring(1,3) //理解为:{1,3 )
输出: 喜欢
(4) String trim(): rim:修剪)
得到当前的String对象的字符序列去掉前后空格后的字符序列。
二 、8.1.4 字符串与基本数据相互转化
(1)字符串类型 - - 转化 - - > 基本数据类型 Integer 类调用方法int parseInt(String s);
double类调用方法Double parseDouble(String s)。
字符串类型的数字 无法 加减等运算 所以要转化为 基本数据类型
举例:
String s="876";
int x =Integer . parseInt(s);
System.out.println(x);
输出: int型的876
(2)基本数据类型 - - 转化 - - > 字符串类型 String调用valueOf( )方法
举例:
String str = String.valueOf(8932);
System.out.println(str);
输出: String 型的 8932
三、8.1.6字符串与字符数组、字节数组
○1字符串与字符数组
(1)getChar(): Sting对象调用getChars()方法可以将start到end-1位置上的字符复制到数组c上(必须保证数组c能容纳下)
例:
String s ="1949年8月15日是抗战胜利日";
char [] a = new char[4];
s.getChars(11,15,a,0); //s里第[11,15)的内容 赋值给数组a[],从数组a[]第0个单元开始放
(2)toCharArray(): 将字符序列全部存放在一个字符数组中(不考虑是否容纳)
例:
char [] c="十一长假期间,学校都放假".toCharArray(); //将字符的整体赋给c
for(int i=0;i<c.length;i++){
System.out.print(c[i]);
}
○2 字符串与字节数组
(1) getBytes() 读的是字节
例:
byte d[ ]="java你好" . getBytes(); //一个字母一个字节 一个汉字两个字节
System.out.println("数组d的长度是:"+d.length); // 输出 :8
String s =new String(d,6,2); //输出 : 好
//d数组的第6个字节开始输出2个字节
四、8.1.7正则表达式及字符串的替换与分解
(1)正则表达式: String对象调用Boolean型的matches(String regex)方法可以判断判断当前的字符串是否和参数regex指定的正则表达式匹配
例:
String regex="[a-zA-z | 0-9|_]+";
Scanner reader = new Scanner(System.in);
String str =reader.nextLine();
if(str.matches(regex)) {
//String调用Boolean型的matches(a);判断当前的字符串是否和参数a指定的正则表达式匹配
System.out.println(str+"是由英文字母、数字或下划线构成");
}
else {
System.out.println(str+"中有非法字符");
}
(2) 字符串的替换 String对象调用String型的replaceAll(String regex,String x)
举例:
String str = "鼠狗虎兔龙蛇马羊";
str=str.replaceAll("[狗]","牛");
System.out.println(str); //鼠牛虎兔龙蛇马羊
(3) 字符序列的分解: String类调用String[] split(String regex),使用参数指定的正则表达式regex作为分隔标记
例:
String str = "1长路漫漫 2为剑作伴";
String regex = "[0-9]+";
String a[]=str.split(regex);
//将str分解成多个分支,给了数组,所以取出要循环方法取出(记)
for(int b=0;b<a.length;b++) { //注意:是“<” 不是<=
int m=b+1;
System.out.println("第"+m+"局:"+a[b]);
}
五、8.2 S stringTokenizer类
(1)和split()方法不同的是,StringTokenizer对象不使用正则表达式作为分隔标记。
(2)通常用while循环 逐个 获取语言符号,可以使用StringTokenizer类中的Boolean型的hasMoreTokens()方法
(3)StringTokenizer fenxi调用的countTokens()方法可以计算数字
例:
String str = "8.5#3.6#2.4";
StringTokenizer fenxi =new StringTokenizer(str,"#");
int m =fenxi.countTokens(); // 计数变量的值
System.out.println(m); // 3
double sum = 0;
while(fenxi.hasMoreTokens()) { //hasMoreTokens()和while搭配循环来获取单词 (重)
//当是单词时是true继续循环 否则false跳出循环
//fenxi调用hasMoreTokens()后 单词就被拿走给了-->item
String item = fenxi.nextToken();
double price =Double.parseDouble(item); //
sum=sum+price;
}
System.out.println(sum);
m = fenxi.countTokens(); // 计数变量
System.out.println(m); // (重)因为单词就被拿走了 所以计数为 0
六、8.4 StringBuffer类
String对象一经声明,便不能修改它的内容,修改的只是引用的地址; 而StringBuffer对象是可以改变它的内容的(实体)。
StringBuffer s =new StringBuffer(“我喜欢”);
S可以调用append方法追加一个字符序列。
s.append(“玩篮球”)
七、8.9 Class类与Console类
(1)Class类:略
(2)Console类 :目的是输入密码的时候输入的内容不回显(不可见)
char[] passwd;
Console cons = System.console();
//System。类调用console()返回Console类的一个对象。
passwd=cons.readPassword();
//等待执行(等待使用者输入键盘) 输入后存放在 数组passwd 里
八、8.10 Pattern类与Matcher类
(1)一个Pattern是一个正则表达式经编译后的表现模式。 Matcher 一个Matcher对象是一个状态机器,
它依据Pattern对象做为匹配模式对字符串展开匹配检查。首先一个Pattern实例订制了一个所用语法
与PERL的类似的正则表达式经编译后的模式,
然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
例:想知道从哪个位置至哪个位置结束出现过字符序列“good”。
String input ="hello,good morning,this is a good idear";
String regex ="good";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
boolean b = m.find();
System.out.println(b);
String item = m.group();
System.out.println(item);
int n1 = m.start(); //起始位置
int n2 = m.end(); //终止位置
System.out.printf("%d,%d\n",n1,n2);
String str = m.replaceAll("好"); //m调用方法将str中的“good”换成“好”
System.out.println(str);