java笔记之string常用方法<二>
1、 获取方法
int length() 获取字符串的长度,
char charAt(int index) 获取特定位置的字符 (角标越界),
int indexOf(String str) 获取特定字符的位置(overload),查找子串第一次出现的索引值,若没找到则返回-1表示,
int lastIndexOf(int ch) 获取最后一个字符的位置,查找子串最后一次出现的索引值,若没找到则返回-1表示。
public class Demo02 { public static void main(String[] args) { String str="abc中国ab中国"; System.out.println("字符的个数:"+str.length()); System.out.println("根据索引值获取对应字符:"+str.charAt(1)); System.out.println("查找子串第一次出现的索引值:"+str.indexOf("ab")); System.out.println("查找子串最后一次出现的索引值:"+str.lastIndexOf("中国")); } }
运行结果:
字符的个数:9
根据索引值获取对应字符:b
查找子串第一次出现的索引值:0
查找子串最后一次出现的索引值:7
2、判断方法
boolean endsWith(String str) 是否以指定字符结束,
boolean isEmpty()是否长度为0,
boolean contains(CharSequences) 是否包含指定序列 应用:搜索,
boolean equals(Object anObject) 是否相等,
boolean equalsIgnoreCase(String anotherString) 忽略大小写是否相等。
public class Demo03 { public static void main(String[] args) { String str="Demo.java"; System.out.println("是否以指定字符串开始:"+str.startsWith("De")); System.out.println("是否以指定字符串结束:"+str.endsWith("java")); System.out.println("判断字符串内容是否为空:"+str.isEmpty()); System.out.println("判断字符串是否包含指定内容:"+str.contains("emo")); System.out.println("判断2个字符串内容是否一致:"+"DEmo.java".equals(str)); System.out.println("判断2个字符串内容是否一致(忽略大小写比较):"+"DeMO.JaVa".equalsIgnoreCase(str)); } }
运行结果:
是否以指定字符串开始:true
是否以指定字符串结束:true
判断字符串内容是否为空:false
判断字符串是否包含指定内容:true
判断2个字符串内容是否一致:false
判断2个字符串内容是否一致(忽略大小写比较):true
3、转换方法
String(char[] value) 将字符数组转换为字符串,
String(byte [] value)将字节数组转化为字符串,
char[] toCharArray() 将字符串转换为字符数组,
byte [] getBytes()将字符串转化为字节数组。
public class Demo03 { public static void main(String[] args) { String str="Demo.java"; char [] buf=str.toCharArray(); System.out.println("字符串转化为字符数组:"+Arrays.toString(buf)); byte [] buf2=str.getBytes(); System.out.println("字符串转为字节数组:"+Arrays.toString(buf2)); } }
输出结果:
字符串转化为字符数组:[D, e, m, o, ., j, a, v, a]
字符串转为字节数组:[68, 101, 109, 111, 46, 106, 97, 118, 97]
4、基本数据型态转换成 String
String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数重载的方法
有下列几种
String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串
String.valueOf(char c) : 将 char 变量 c 转换成字符串
String.valueOf(char[] data) : 将 char 数组 data 转换成字符串
String.valueOf(char[] data, int offset, int count) : 将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串
String.valueOf(double d) : 将 double 变量 d 转换成字符串
String.valueOf(float f) : 将 float 变量 f 转换成字符串
String.valueOf(int i) : 将 int 变量 i 转换成字符串
String.valueOf(long l) : 将 long 变量 l 转换成字符串
String.valueOf(Object obj) : 将 obj 对象转换成 字符串, 等于 obj.toString()
比如:
int c1=41254435;
String str1=String.valueOf(c);
System.out.println(str1);
char c2[]={'a','c','v','b'};
String str2=String.valueOf(c2);
此时输出的str即为字符串:str1 :41254435。
str2 :acvb
其他类型就不举例子了,大家可以试试。
5、其他方法
String replace(char oldChar, char newChar) 替换
String[] split(String regex) 切割
String substring(int beginIndex) 指定开始位置,截取到末尾处
String substring(int beginIndex, int endIndex)截取字串
String toUpperCase() 转大写
String toLowerCase() 转小写
String trim() 去除空格
String concat() 字符串拼接
public class String02 { public static void main(String[] args) { String string01="大-家-一-起-玩-游-戏"; String [] str01= string01.split("-");//依据-对字符串进行切割,返回字符串数组 System.out.println("切割返回的字符串数组为:"+Arrays.toString(str01)); String string02=" [HeLlo] "; String str02=string02.substring(5,6);//包头不包尾, System.out.println("从指定索引处截取:"+str02); System.out.println("转化为大写:"+string02.toUpperCase()); System.out.println("转化为大写:"+string02.toLowerCase()); System.out.println("去除前后空格: "+string02.trim()); System.out.println("替换后的内容是:"+string02.replace("o","o world")); //将0替换为0 hello ,此处是char类型的。为何传入字符串依据没报错
String s1="lucy ";
String s2="allen";
s1=s1.concat(s2);//等价于 s1=s1+s2,都可以将2个字符串拼接到一块,这一点2这功能相同。 但是 + 还可以将 字符串与非字符串(比如数字),拼接在一起,成为字符串
System.out.println(s1);
}
}
输出结果:
切割返回的字符串数组为:[大, 家, 一, 起, 玩, 游, 戏]
从指定索引处截取:e
转化为大写: [HELLO]
转化为大写: [hello]
去除前后空格: [HeLlo]
替换后的内容是: [HeLlo world]
lucy allen
Q:String replace(char oldChar, char newChar) 此处是char类型的。为何传入字符串依据没报错
A:string.replace(CharSequence target, CharSequence replacement);因为多态的关系,CharSequence接口有string的实现类。所以传入string类型的依旧没报错。
6、String方法的练习
6.1.自定义string类的trim方法。去除字符串两边空格的函数。
public class String03 { public static void main(String[] args) { String aString=" fsdaf "; System.out.println("自定义输出的结果为: "+Mytrim(aString)); } public static String Mytrim(String str) { char []c=str.toCharArray(); int startindex =0;//定义开始索引值 int endindex =c.length-1;//定义结束的索引值 while(true){ if (c[startindex]==' ') { startindex++; } else { break; } } //一直遍历,直到c[startindex]的值不为空,跳出循环 while(true){ if (c[endindex]==' ') { endindex--; } else { break; } } return str.substring(startindex, endindex); //使用string的substring方法返回 } }
输出结果:
自定义输出的结果为:fsda
6.2.获取上传文件名 "D:\\20120512\\day12\\Demo1.java"
public class String04 { public static void main(String[] args) { String string="D:\\20120512\\day12\\Demo1.java"; string=fielName01(string); System.out.println("方法一输出的路径:"+string); fielName02(string); } public static String fielName01(String string){//方法一根据最后一次出现的次数进行截取 int last=string.lastIndexOf("\\"); return string.substring(last+1); } public static void fielName02(String string){//方法一利用string的切割方法 String [] str=string.split("\\\\"); int last =str.length-1; System.out.println("方法二输出的路径:"+str[last]); } }
输出结果:
方法一输出的路径:Demo1.java
方法二输出的路径:Demo1.java
6.3 求一个子串出现的次数
public class String04 { public static void main(String[] args) { String string="D:\\20120512\\day12\\Demo1.java"; int count =getCount(string, "12"); System.out.println(count); } public static int getCount( String src , String tag ){ // 0. 定义索引变量和统计个数的变量 int index = 0; int count = 0; // 1. 写循环判断 while ( ( index = src.indexOf(tag) ) != -1 ) { // jackjava src = src.substring( index + tag.length() ); // index count++; } return count; } }
输出结果:3