String类


String类扩展功能实现


重复某个字符串
题:重复某个字符串,如:'a' 5=>"aaaaa"就是将字符’a’重复5次,'a' -1=>"" 就是将字符’a’重复-1次则返回 “”。看代码:
其中 : c =>被重复的字符;
count=>重复的数目,如果count<=0则返回"".
本题要注意的一点就是返回时要把数组转字符串返回。

public static String repeat(char c, int count) {
	  if(count <= 0){
 		  return "";
 	 }else{
 		  char[] arr = new char[count];
 		  for(int i = 0; i < count; i++){
 			   arr[i] = c;
 		  }
 		  //字符串与字符数组的转换
 		  return new String(arr);
	  }
  }

填充字符串(填充于原有字符串之前)
题:将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串,字符填充于字符串之前。如:"abc" 'A' 5=>"AAabc"就是在字符串"abc"之前填充’A’,使得填充之后字符串长度为5。看代码:
其中:str=>被填充的字符串;
filledChar=>填充的字符;
len=>填充长度
本题需要注意的就是数组形式比较繁琐,但是也能够实现,注意其范围还有数组下标,以及循环,不是嵌套的循环;字符串形式时也要注意返回类型,求字符串长度时注意是方法,所以是str.length()必须加括号。

//数组形式
 public static String fillBefore(String str, char filledChar, int len) {
     	  if(str.length() >= len){
   		  return str;
   	 }else{
   		  int size = len-str.length();
   		  char[] arr1 = new char[len];
   		  int i = 0;
   		  for(i = 0; i < size; i++){
   			   arr1[i] = filledChar; 
   		  }
   		  char[] strr = str.toCharArray();
   		  for(; i < len; ++i){
   			 arr1[i] = strr[i-size];
  		 }
  		   return new String(arr1);
  	  }
  }
//字符串形式
   public static String fillBefore(String str, char filledChar, int len) {
     	 if(str.length() >= len){
    		 return str;
   	 }else{
   		  char[] arr1 = new char[len-str.length()];
   		  for(int i = 0; i < len-str.length(); i++){
   			   arr1[i] = filledChar;
   		  }
   		  String str2 = new String(arr1);
   		  return str2 + str;
   	 }
  }

填充字符串(填充于原有字符串之后)
与上题类似,不同之处在于把要填充的字符放在原有字符串之后,这里就不再赘述。直接看代码:

//数组形式
public static String fillAfter(String str, char filledChar, int len) {
	 if(str.length() >= len){
     		return str;
    	}else{
    		 char[] strr = str.toCharArray();
    		 int size = len-str.length();
    		 char[] arr1 = new char[len];
    		 int i = 0;
    		 for(i=0; i < str.length(); ++i){
    			arr1[i] = strr[i];
    		 }
    		 for(; i < len; i++){
    		 	 arr1[i] = filledChar; 
    		 }
     		return new String(arr1);
   	 }
 }
//字符串形式 
public static String fillAfter(String str, char filledChar, int len) {
	if(str.length() >= len){
   		  return str;
    	}else{
    		 char[] arr1 = new char[len-str.length()];
     		for(int i = 0; i < len-str.length(); i++){
     			 arr1[i] = filledChar;
    		 }
    		 String str2 = new String(arr1);
    		 return str + str2;
   	 }
   }

移除字符串中所有给定的字符串
题:移除字符串中所有给定的字符串。如:removeAll("aa-bb-cc-dd","-")=>aabbccdd 就是将字符串"aa-bb-cc-dd"中所有的"-"全部移除。看代码:
其中:str=>字符串;
strToRemove=>被移除的字符串;
本题需要注意的就是返回值类型的问题。

 public static String removeAll(CharSequence str, CharSequence strToRemove) {
 	String str3 = new String(str.toString());
 	 if(str.length() == 0){
 		  return "";
 	 }else{
 	 	//public boolean contains(CharSequence s)判断一个字串是否存在
    		 while(str3.contains(strToRemove)){
    			 //若存在,则将要替换的字符串的内容全部变为""
     			 return str3.replaceAll(strToRemove.toString(),"");
     		}
    		 return str3;
  	}
 }

反转字符串
题:反转字符串。如abcd=>dcba.看代码:
其中:str=>被反转的字符串;
本题需要注意的就是循环次数,一定是除2。

 public static String reverse(String str) {
	  if(str == null){
 		  return null;
	   }else if(str.length() == 0){
 		  return "";
 	   }else{
  		 char[] arr4 = str.toCharArray();
  		 for(int i = 0; i < str.length()/2; i++){
   			 char tmp = arr4[i];
   			 arr4[i] = arr4[str.length()-i-1];
   			 arr4[str.length()-i-1] = tmp;
   	 	 }
 	  return new String(arr4);
 	 }
   }  

测试代码

public class Strings{
	public static void main(String[] args){
 		 //repeat
  		 System.out.println("*************repeat************");
 		 char c = '5';
 		 int count = 10;
 		 System.out.println("重复字符"+ "'" + c + "'" + count + "次后的结果为:");
		 System.out.println(repeat(c,count));
 		 System.out.println();
 		 //fillBefore
 		 System.out.println("**********fillBefore***********");
 		 String str1 = "abcde";
		 char filledChar = 'A';
 		 int len = 10;
  		 //int len = 5;
 		 //int len = 1;
  		 System.out.println("填充之前字符串为:" + str1 + " ,填充字符'" + filledChar + "'使得字符串长度为:" + len + "  ,填充之后字符串为:" + fillBefore(str1,filledChar,len));
 		 System.out.println();
 		 //fillAfter
 		 System.out.println("**********fillAfter************");
 		 String str11 = "abcde";
 		 char filledCharr = 'A';
 		 int leng = 10;
 		 //int leng = 5;
 		 //int leng = 1;
 		 System.out.println("填充之前字符串为:" + str11 + " ,填充字符'" + filledCharr + "'使得字符串长度为:" + leng + "  ,填充之后字符串为:" + fillAfter(str11,filledCharr,leng));
 		 System.out.println(); 
  		//removeAll
  		 System.out.println("**********removeAll************");
  		 String str3 = "12-hu-90-ji";
  		 String strRemove = "-";
  		 System.out.println("删除之前字符串为:" + str3 + " ,删除字符:'" + strRemove +" '删除之后字符串为:" + removeAll(str3,strRemove));
 		 System.out.println();  
 		 //reverse
 		 System.out.println("************reverse************");
 		 //String str4 = null;
 		 //String str4 = "12abcdefg67";
 		 String str4 = "6754390";
 		 System.out.println("反转之前字符串为:" + str4 + "  反转之后字符串为:" + reverse(str4));
  		 System.out.println();
	 }
 }

结果
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值