这周遇到了一个需要处理String字符串的问题,用到了split将字符串解析为一个String的数组,还用到了某些替换字符的操作。
1 /* 2 **将String source按‘,’间隔开,再分别对array的每个元素进行操作 3 **注意转义的换行符应该是‘\\\\n’ 4 */ 5 String[] array = source.split("\\,"); 6 7 /* 8 **将所有a替换为b或者删去所有换行符 9 */ 10 source = source.replaceall("a", "b"); 11 source = source.repalceall("\\\\n", "");
String类适用于描述字符串事物。
那么它就提供了多个方法对字符串进行操作,现在将Java中一些常用的对String的操作整理如下。
常用的方法如下:
1、获取:
1.1 字符串中包含的字符数,也就是字符串的长度。 int length():获取长度。 1.2 根据位置获取该位置上的某个字符。 char charAt(int index):返回指定索引处的char值。 1.3 根据字符获取该字符在字符串的位置。 int indexOf(String str):返回的是str在字符串中第一次出现的位置。 int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。 int lastIndexOf(int ch):反向索引一个字符出现的位置
2、判断:
2.1 字符串中是否包含某一个子串。 boolean contains(str); 特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1表示该str不在字符串中存在。 所以,也可以用于对指定判断是否包含。 if(str.indexOf("aa")!=-1) 而且该方法既可以判断,又可以获取出现的位置 2.2 字符中是否有内容。 boolean isEmpty():原理就是判断长度是否为0. 2.3 字符串是否是以指定内容开头。 boolean startsWith(str); 2.4 字符串是否是以指定内容结尾。 boolean endsWith(str); 2.5判断字符串内容是否相同。复写Object类中的equals方法。 boolean equals(str); 2.6 判断内容是否相同,并忽略大小写 boolean equalsIgnoreCase();
3、转换
3.1 将字符数组转换成字符串。 构造函数: String(char[]) String(char[],offset,count):将字符数组中的一部分转换成字符串。 静态方法: static String copyValueOf(char[]); static String copyvalueOf(char[] data, int offset, int count); 3.2 将字符串转换成字符数组(重点)。 char[] toCharArray(); 3.3 将字节数组转换成字符串。 String(byte[]) String(byte[],offset,count):将字节数组中的一部分转换成字符串。 3.4 将字符串转换成字节数组 3.5 将基本数据类型转换成字符串。 String valueOf(int); String valueOf(double);
特殊:字符串和字节数组在转换过程中是可以指定编码表的。
4、替换
String replace(oldchar,newchar);
5、切割
String[] split(regex);
6、子串 获取字符串中的一部分
String substring(begin);
String substring(begin,end);
7、转换,去除空格,比较
7.1 将字符串转成大写或者小写。 String toUpperCase(); String toLowerCase(); 7.2 将字符串两端的多个空格去除。 String trim();
7.3 将两个字符串进行自然顺序的比较。
1 public class StringDemo1 { 2 //转换,去除空格,比较 3 public static void method_7(){ 4 String s="Hello Java"; 5 sop("原字符串为:"+s); 6 sop(s.toUpperCase()); 7 sop(s.toLowerCase()); 8 sop(s.trim()); 9 10 String s1="acc"; 11 String s2="aaa"; 12 sop(s1.compareTo(s2)); 13 } 14 //子串 获取字符串中的一部分 15 public static void method_sub(){ 16 String s="abcdefghijklmnopqrstuvwxyz"; 17 sop("原字符串为"); 18 sop(s); 19 String s1=s.substring(9); //从指定位置到结尾。如果角标不存在,则会出现字符串角标越界异常。 20 sop("获取的子串s1为:"); 21 sop(s1); 22 String s2=s.substring(7,20); //包含头,不包含尾。 获取整个字符串:s.substring(0,s.length()); 23 sop("获取的子串s2为:"); 24 sop(s2); 25 } 26 //切割 27 public static void method_split(){ 28 String s="zhangsan,lisi,wangwu"; 29 String[] arr=s.split("a"); 30 sop("原字符串为:"); 31 sop(s); 32 sop("切割后的字符串为:"); 33 for(int x=0;x<arr.length;x++) 34 { 35 System.out.print(arr[x]+" "); 36 } 37 System.out.println(); 38 } 39 //判断 40 public static void method_is(){ 41 String str="ArrayDemo.java"; 42 String str1="arraydemo.java"; 43 //判断文件名称是否以Array开头 44 sop(str.startsWith("Array")); 45 //判断文件名称是否是以.java结尾 46 sop(str.endsWith(".java")); 47 //判断文件名称中是否包含Demo 48 sop(str.contains("Demo")); 49 //判断两个文件名是否相同(区分大小写) 50 sop(str.equals(str1)); 51 //判断两个文件名是否相同(不区分大小写) 52 sop(str.equalsIgnoreCase(str1)); 53 } 54 //获取 55 public static void method_get(){ 56 String str="abcdeakpf"; 57 sop("字符串为:"+str); 58 //长度 59 sop("字符串的长度为:"+str.length()); 60 //根据索引获取字符 61 sop("角标为四的位置上的字符为:"+str.charAt(4));//当访问到字符串中不存在的角标时,会发生 StringIndexOutOfBoundsException异常 62 //根据字符获取索引 63 sop("从角标为3的位置开始往后索引 a 出现的位置为:"+str.indexOf(‘a‘,3));//如果没有找到返回-1 64 //反向索引一个字符出现的位置 65 sop("从字符串右面开始索引第一个a出现的位置为:"+str.lastIndexOf("a")); 66 } 67 //转换 68 public static void method_trans(){ 69 char[] arr={‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘}; 70 String str="jkasdhavsgjv"; 71 char[] a=str.toCharArray(); 72 //字符串操作 73 System.out.print("将字符串转换为字符数组为:["); 74 for(int x=0;x<a.length;x++) 75 { 76 if(x<a.length-1) 77 System.out.print(a[x]+","); 78 else 79 System.out.print("]"); 80 } 81 System.out.println(); 82 //字符数组操作 83 System.out.print("字符数组为:["); 84 for(int x=0;x<arr.length;x++) 85 { 86 if(x<arr.length-1) 87 System.out.print(arr[x]+","); 88 else 89 System.out.print("]"); 90 } 91 System.out.println(); 92 String s=new String(arr); 93 sop("转换成字符串为:"+s); 94 //获取从角标为1的位置的字符开始三个字符 95 String s1=new String(arr,1,3); 96 sop("从角标为1的位置的字符开始三个字符组成的字符串为:"+s1); 97 } 98 //替换 99 public static void method_replace(){ 100 101 String s=" hello java "; 102 103 String s1=s.replace(‘a‘, ‘n‘); //如果要替换的字符不存在,则返回的还是原字符串 104 105 sop("原来的字符串为:"+s); 106 107 sop("替换字符后的字符串为:"+s1); 108 109 } 110 //主函数 111 public static void main(String[] args) { 112 method_get(); 113 method_is(); 114 method_trans(); 115 method_replace(); 116 method_split(); 117 method_sub(); 118 method_7(); 119 } 120 public static void sop(Object obj){ 121 System.out.println(obj); 122 } 123 }
References:
[1] http://www.iteye.com/problems/8342, Java字符串解析;
[2] http://blog.csdn.net/u012369373/article/details/49894551, JAVA中String字符串的各种基本操作.