一、字符串相关函数的操作 1、indexOf(String str, int fromIndex)//返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 说明:字符串的索引从0开始! 2、substring(int beginIndex, int endIndex)//返回一个新字符串,它是此字符串的一个子字符串。 说明:返回的字符串是beginIndex~endIndex-1,因此得到的字符串长度为endIndex-beginIndex
例如:"hamburger".substring(4, 8) return "urge" 3、replaceAll(String regex, String replacement)//使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 说明:
(1)、以为 str.replaceAll("ab","b");就把str中的所有"ab"换成了"b"!注意,这个函数是将替换后的字符串返回了。因此应该str=str.replaceAll("ab","b");
(2)、
4、split(String regex)//根据给定正则表达式的匹配拆分此字符串。返回String[] 说明:
(1)、String str=""," ",null,这三者的区别。
"",分配了内存,但值为空,length=0;java中不存在像C/C++中那样字符串后面有"\0"
" ",分配了内存,值为空格,length=1,对应一个ASCII码
null,没有分配内存,无法引用.length(),仅将str引用置为null,表示无引用~
(2)、String[] xy = new String[0];
在Java中允许创建一个大小为0的数组,也就是说"int[] emptyArray = new int[0];"在Java中是正确的。这样的数组没有分配空间?。用处是:当返回数组中元素为0时,可以不用返回null,而是返回一个[0]的数组,引用时不会像引用null那样出现异常!。当然,大小为负数的数组在Java中是不被允许的。 (3)、split()函数中会出现很奇怪的问题,例如http://www.cnblogs.com/liubiqu/archive/2008/08/14/ 1267867.html
eg..1:
String s = "abc";
String[] keys = s.split("");
结果:keys长度为4,值分别为"",a,b,c。至今未能弄明白数组的第一个元素从何而来?
eg..2:
String s = " abc";//第一个位置上是空格
String[] keys = s.split(" ");//中间是空格
结果:keys长度为2,值为"",abc,也就是"空格"是分隔符!,这种才能通过空格来分割字符串,注意,不是第一种那样做!
注意:s=" ab",则用空格分开后的keys长度为3,分别为"","",ab。
而s="ab ",则空格分开后的keys长度为1,是ab。这说明字符串中第一个字符是否为空格这一条件很重要!
若s=" ",则空格分开后的keys长度为0,说明字符串中是否有字符也很重要。
eg..3:
String s = " abc";
String[] keys = s.split("x");//字符串中不存在的字符
结果:keys长度为1,值为" abc"。
说明:如果split的字符串中不含有该子串,则返回原字符串!
eg..4:
String s = "abc";
String[] keys = s.split(".");//特殊字符,若不转义("\\."),则会无法split,返回数组个数为0!
结果:keys长度为0!
说明:split无法进行后,不会返回一个null,而是返回一个大小为0的数组。这样程序更加健壮! 二、其他
5、java中char和int间的转化:
char可以直接转为int:
char x = 'A'; int y = x;
int转char则需要强制转换!
x=(char)y;
6、正则匹配字符串。
String s = "abcd";
System.out.println(s.match("[a-zA-Z]*"));//print true