String类功能扩展实现

String类是Java语言中常用的一个类,基本在所有的项目开发中都会用到。String类的实例化方式有两种:
1.直接赋值

String str = "Hello Bit";//str是一个对象,那么 "Hello Bit"就应该保存在堆内存中
System.out.println(str);

直接赋值是最常用的实例化方式,但是String 本身是一个类,既然是类,那么类中一定存在构造方法。String 类的其中一种构造方法如下:

public String(String str);

2.传统方法(构造法)

String str = new String ("Hello Bit");
System.out.println(str);

这种方法使用了关键字new进行对象实例化

以下是String类的功能扩展实现:

//String类扩展功能实现
public class Strings{

     /**
     * 1.重复某个字符
     * 
     * 例如: 
     * 'a' 5   => "aaaaa"  
     * 'a' -1  => ""
     * 
     * @param c     被重复的字符
     * @param count 重复的数目,如果小于等于0则返回""
     * @return 重复字符字符串
     */
    public static String repeat(char c, int count) {
       if(count<0){
		   return null;
	   }else{
		   char[] a=new char[count];
		   int i=0;
		   for(i=0;i<count;i++){
			a[i]=c;   
		   }
		   String str=new String(a);
		   return str;
	   }
    }
    
    
     /**
     * 2.将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串
     * 字符填充于字符串前
     *
     * 例如: 
     * "abc" 'A' 5  => "AAabc"
     * "abc" 'A' 3  => "abc"
     *
     * @param str        被填充的字符串
     * @param filledChar 填充的字符
     * @param len        填充长度
     * @return 填充后的字符串
     */
    public static String fillBefore(String str, char filledChar, int len) {		
       int length=str.length();
	   if(str==null){
		   return null;
	   }
	   if(len<=length){
		   return str;
	   }else{
		   str=repeat(filledChar,len-length)+str;
	   }
	   return str;
    }
    
    /**
     * 3.将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串<br>
     * 字符填充于字符串后
     * 例如: 
     * "abc" 'A' 5  => "abcAA"
     * "abc" 'A' 3  => "abc"
     *
     * @param str        被填充的字符串
     * @param filledChar 填充的字符
     * @param len        填充长度
     * @return 填充后的字符串
     */
    public static String fillAfter(String str1, char filledChar, int len) {
       int length=str1.length();
	   if(str1==null){
		   return null;
	   }
	   if(len<=length){
		   return str1;
	   }else{
		   str1=str1+repeat(filledChar,len-length);
	   }
	   return str1; 
    }

    /**
     * 4.移除字符串中所有给定字符串
     * 例:removeAll("aa-bb-cc-dd", "-") => aabbccdd
     *
     * @param str         字符串
     * @param strToRemove 被移除的字符串
     * @return 移除后的字符串
     */
    public static String removeAll(CharSequence str2, CharSequence strToRemove) {
		String a=new String(str2.toString());
        if(str2 == null){
			return null;
		}else{
			a=a.replaceAll(strToRemove.toString(),"");
			return a;
		}
    }
    
    /**
     * 5.反转字符串
     * 例如:abcd => dcba
     *
     * @param str 被反转的字符串
     * @return 反转后的字符串
     */
    public static String reverse(String str3) {
        if(str3==null){
			return null;
		}
		char[] b = str3.toCharArray();
		int start=0,tail=b.length-1;
		while(start<tail){
			char temp=b[tail];
			b[tail]=b[start];
			b[start]=temp;
			start++;
			tail--;
		}
		String c=new String(b);
		return c;
	}
    public static void main(String[] args){
		//1.repeat
		char c = 'l';
		System.out.println("重复的字符为:"+c+"  重复后的字符为:"+repeat(c,5));
		System.out.println("重复的字符为:"+c+"  重复后的字符为:"+repeat(c,0));
		System.out.println("重复的字符为:"+c+"  重复后的字符为:"+repeat(c,-1));
		System.out.println("*************************************");
		//2.在字符串前填充
		String str="tkhlsm";
		System.out.println("填充前的字符串为:"+str+  "填充后的字符串为:"+fillBefore(str,'a',8));
		System.out.println("填充前的字符串为:"+str+  "填充后的字符串为:"+fillBefore(str,'a',5));
		System.out.println("*************************************");
		//3.在字符串后填充
		String str1="lsm";
		System.out.println("填充前的字符串为:"+str1+  "填充后的字符串为:"+fillAfter(str1,'d',5));
		System.out.println("填充前的字符串为:"+str1+  "填充后的字符串为:"+fillAfter(str1,'d',3));
		System.out.println("*************************************");
		//4.移除字符串中所有给定字符串
		CharSequence str2="ttz-lsm-zwd-mmd";
		System.out.println("移除前的字符串为:"+str2+  "移除后的字符串为:"+removeAll(str2,"-"));
		System.out.println("*************************************");
		//5.反转字符串
		String str3="abcde";
		System.out.println("反转前的字符串:"+str3+    "反转后的字符串为:"+reverse(str3));
		System.out.println("*************************************");
	}   
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/LSMSMD0526/article/details/84452638