美文网首页
字符串的相关方法

字符串的相关方法

作者: 妃雪 | 来源:发表于2017-06-12 17:14 被阅读12次

    1.字符串的替换
    ·public String replaceAll(String regex, String replacement)
    【替换满足条件的子字符串,使用repalcement去替换regex的内容,而且
    是全部替换】
    ·public String replaceFirst(String regex, String replacement)
    【替换第一个满足条件的字符串】
    范例:字符串的替换

    public class stringtest {
        public static void main(String[] args){  
            String str = "hello world !";
            System.out.println(str.replaceAll("l", "_"));//替换所有的l
            System.out.println(str.replaceFirst("l", "_")); //替换第一个l
            System.out.println(str); //输出原来的字符串
        } 
    }
    

    输出的结果:

    he__o wor_d !
    he_lo world !
    hello world !
    

    2.字符串的截取
    ·public String substring(int beginIndex):
    【截取从指定的开始索引到后面的所有内容】
    ·public String substring(int beginIndex, int endIndex)
    【截取从指定开始索引到结束索引的内容,其中不包括结束索引下标的内容】
    范例:字符串的截取

    public class stringtest {
        public static void main(String[] args){  
            String str = "hello world !";
            System.out.println(str.substring(1));  //输出ello world !
            System.out.println(str.substring(1, 6));//输出ello  
        } 
    }
    
    

    3.字符串的拆分
    ·public String[] split(String regex)
    【根据指定的拆分标识拆分所有内容】
    ·public String[] split(String regex, int limit)
    【根据指定的拆分标识拆分字符串的部分内容】
    例子:

    
    public class stringtest {
       public static void main(String[] args){  
           
    //      String str = "hello world !";
    //      System.out.println(str.replaceAll("l", "_"));//替换所有的l
    //      System.out.print(str.replaceFirst("l", "_")); //替换第一个l
    //      System.out.println(str); //输出原来的字符串
           
    //      System.out.println(str.substring(1));  //输出ello world !
    //      System.out.println(str.substring(1, 6));//输出ello  
           
           String  str = "wecomle to china !";
           String result[] = str.split(" ");//将字符串按照 “ ”拆分
              for(int i=0;i<result.length;i++){ 
                   System.out.println(result[i]);
                 }     
              
              //部分拆分
              String result1[]=str.split(" ",2);//将字符串按照“ ”拆分
                 for(int i=0;i<result1.length;i++){ 
                   System.out.println(result1[i]);
                 } 
       
       } 
    }
    
    

    当以“.”拆分时,“.”表示访问对象的属性或者方法的时候使用,在这里需要转义(普通字符),用"\"
    例:

    public class Demo{ 
        public static void main(String[] args){ 
              String str="192.168.0.19";
              String result[]=str.split("\\.");//将字符串按照“.”拆分
              for(int i=0;i<result.length;i++){ 
                System.out.println(result[i]);
              } 
         } 
    }
    
    

    范例:张三:20|李四:12|王五:9

     public class Demo{ 
        public static void main(String[] args){ 
              String str="张三:20|李思:13|王五:35";
              String result[]=str.split("\\|"); 
              for(int i=0;i<result.length;i++){ 
                 String perInfo[]=result[i].split(":");
                 System.out.println("姓名是:"+perInfo[0]+", 年龄是:"+perInfo[1]);
              } 
         } 
    }
    

    4、大小写转换方法
    ·public String toUpperCase()
    【将小写转换成大写】
    ·public String toLowerCase()
    【将大写转换成小写】
    范例: 实现大小写转换

     public class Demo{ 
        public static void main(String[] args){ 
              String str="ABCD"; 
              System.out.println("转换后的内容是:"+str.toLowerCase());
              String str1="hello world";
              System.out.println("转换后的内容是:"+str1.toUpperCase());
         } 
    }
    

    5、 将首写字母转化为大写
    字符串对象提供大量的方法,但是却缺少一个将首写字母转换成大写的方法,这个方法我们可以自己封装。
    范例:将首字母大写

     public class Demo{ 
        public static void main(String[] args){ 
              String name="smith"; 
              System.out.println("转换后的内容是:"+initCase(name));
         } 
        public static String  initCase(String str){ 
            //可以截取字符串的第一单词之后转换成大写
            //可以截取第一个以后的所有内容加上第一步转换后的内容
            return "set"+str.substring(0,1).toUpperCase()+str.substring(1);
        } 
    }
    

    6.字符串的其他方法的补充
    ·public boolean equalsIgnoreCase(String anotherString)
    【忽略大小写比较】
    范例:忽略大小写比较

    public class Demo{ 
        public static void main(String[] args){ 
             String str1="abcd";
             System.out.println("ABCD".equalsIgnoreCase(str1));//忽略大小写的比较
         } 
    }
    

    范例:取得指定索引下标的字符:
    ·public char charAt(int index)

    public class Demo{ 
        public static void main(String[] args){ 
             String str1="abcd";
             System.out.println(str1.charAt(1));
         } 
    }
    

    范例:返回的是某字符在字符串中第一次出现的位置
    ·public int indexOf(String str)
    【返回的是指定字符在字符串中的下标索引】

    public class Demo{ 
        public static void main(String[] args){ 
             String str1="abacda";
             System.out.println(str1.indexOf("a"));//返回指定字符在字符串中出现的位置
         } 
    }
    

    范例:返回某个字符在字符串中最后一次出现的位置
    ·public int lastIndexOf(String str)
    【返回指定字符在字符串中最后一次出现的位置】

    public class Demo{ 
        public static void main(String[] args){ 
             String str1="abacda";
             System.out.println(str1.lastIndexOf("a"));//返回指定字符在字符串中最后出现的位置
         } 
    }
    

    范例:去掉字符串两端的空格
    ·public String trim()
    【去掉字符串两端的空格,但是不能去掉字符串中间的空格】

    public class Demo{ 
        public static void main(String[] args){ 
             String str1="    abacda    "; 
             System.out.print("vvvv"); 
             System.out.print(str1.trim()); 
              System.out.print("vvvv"); 
         } 
    }
    

    7.String 类型的引用传递
    范例:自定义的对象的引用传递

    class Person{ 
         String name;
         int age;
       //setter和getter方法略
       public Person(){}
       public Person(String name,int age){ 
         this.name=name;
         this.age=age;
       } 
    } 
    public class Demo{ 
        public static void main(String[] args){ 
           Person  per=new Person("傻强",12);
           change(per);//之前的引用传递  等价于  temp=per;
           System.out.println(per.name);
        } 
        public static  void change(Person temp){ 
           temp.name="利强";
        } 
    }
    

    范例:字符串的引用传递

    public class Demo{ 
        public static void main(String[] args){ 
          String name="傻强";
          change(name);//temp=name
          System.out.println(name);
        } 
        public static  void change(String temp){ 
          temp="利强";
        } 
    }
    

    8.String、StringBuffer、StringBuilder的区别
    通过前面的学习我们知道一个String类型的字符串对象是不可以改变的,但是可以改变其引用,一旦改变了引用就会产生垃圾,所以如果一个String类型的字符串改变的频率过高则会造成系统的性能下降,于是我们有一个原则:
    ·如果一个字符串不需要经常改变则使用String类型声明,而且首选直接赋值的方式
    ·如果一个字符串需要经常改变,那么则使用StringBuffer或者StringBuilder来声明,这俩种字符串类型的内容是可以改变的。
    范例:String类型的字符串和StringBuffer的比较

         public class Demo{ 
            public static void main(String[] args){ 
               String str1="a";
               long start1=System.currentTimeMillis();
               for(int i=0;i<30000;i++){ 
                  str1=str1+"n";
               } 
               System.out.println(str1);
               long end1=System.currentTimeMillis();
               System.out.println("耗时:"+(end1-start1));
          
               StringBuffer sb=new StringBuffer("a");
               long start2=System.currentTimeMillis();
               for(int i=0;i<30000;i++){ 
                  sb.append("n");
               } 
               System.out.println(str1);
               long end2=System.currentTimeMillis();
               System.out.println("耗时:"+(end2-start2));
        } 
        }
    

    上面的代码证明了当字符串改变频率很高的时候使用StringBuffer或者StringBuilder
    那么StringBuffer和StringBuilder有什么区别?
    ·StringBuffer考虑了线程安全,StringBuilder没有考虑线程的安全。

    相关文章

      网友评论

          本文标题:字符串的相关方法

          本文链接:https://www.haomeiwen.com/subject/ygulqxtx.html