对于String类进行相应的扩展方法:
//String类扩展功能实现
public class Strings{
/**
* 重复某个字符
*
* 例如:
* '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[] data = new char[count];
for(int i = 0;i<data.length;i++){
data[i] = c;
}
return new String(data);//字符数组转字符串
}
}
/**
* 将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串
* 字符填充于字符串前
*
* 例如:
* "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) {
char[] data = str.toCharArray();//将字符串转换为字符数组
if(data.length>=len){
return str;
}else{
char[] data2 = new char[data.length+len];
for(int i =0;i<len-data.length;i++){
data2[i] = filledChar;
}
for(int i=0;i<data.length;i++ ){
data2[len-data.length+i] =data[i];
}
return new String(data2);
}
}
/**
* 将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串<br>
* 字符填充于字符串后
* 例如:
* "abc" 'A' 5 => "abcAA"
* "abc" 'A' 3 => "abc"
*
* @param str 被填充的字符串
* @param filledChar 填充的字符
* @param len 填充长度
* @return 填充后的字符串
*/
public static String fillAfter(String str, char filledChar, int len) {
char[] data = str.toCharArray();//将字符串转换为字符数组
if(data.length>=len){
return str;
}else{
char[] data2 = new char[data.length+len];
for(int i = 0;i<data.length;i++){
data2[i] = data[i];
}
for(int i = data.length;i<len;i++){
data2[i] = filledChar;
}
return new String(data2);
}
}
/**
* 移除字符串中所有给定字符串
* 例:removeAll("aa-bb-cc-dd", "-") => aabbccdd
*
* @param str 字符串
* @param strToRemove 被移除的字符串
* @return 移除后的字符串
*/
public static String removeAll(CharSequence str, CharSequence strToRemove) {
String str1 = (String)str;
String[] result = str1.split("-");
for(int i = 0;i<result.length;i++){
System.out.print(result[i]);
}
System.out.println();
return str1;
}
/**
* 反转字符串
* 例如:abcd => dcba
*
* @param str 被反转的字符串
* @return 反转后的字符串
*/
public static String reverse(String str) {
char[] data = str.toCharArray();
int right = data.length-1;
int left = 0;
while(left<right){
char temp = data[left];
data[left] = data[right];
data[right] = temp;
left++;
right--;
}
return new String(data);
}
public static void main(String[] args){
String str1 = "hello";
String str2 = "h-e-l-l-o";
char a = 'a';
int t = 3;
int t1 = -1;
int t2 = 10;
System.out.println("1."+repeat(a,t));
System.out.println("1."+repeat(a,t1));
System.out.println("2."+fillBefore(str1,a,t));
System.out.println("2."+fillBefore(str1,a,t2));
System.out.println("3."+fillAfter(str1,a,t));
System.out.println("3."+fillAfter(str1,a,t2));
System.out.println("4."+removeAll(str2,"-"));
System.out.println("5."+reverse(str1));
}
}
对应的结果如下: