java字符串处理常见问题(不断补充)

一、字符串相关函数的操作

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:
          S
tring 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值